亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

python裝飾器三種裝飾模式的簡單分析

瀏覽:2日期:2022-07-12 11:23:55

學設計模式中有個裝飾模式,用java實現起來不是很難,但是遠遠沒有python簡單,難怪越來越火了!

這里就簡單討論下python的幾種裝飾模式:

一 無參裝飾器:

# 裝飾器import time # 裝飾器,記錄函數運行時間def decorator01(fun): def wapper(): stime = time.time() fun() etime = time.time() print('fun run time is {TIME}'.format(TIME=etime - stime)) return wapper # 必須要返回一個函數的內存地址 # 使用裝飾器裝飾某個函數,等價于 test01=decorator01(test01),# 即將test01實際引用變成wapper函數內存地址,所以執行test01實際是執行wapper@decorator01def test01(): time.sleep(2) print('test01 is running') test01() # 不修改代碼和調用方式,實現添加記錄時間功能

二 函數帶參裝飾器:

# 裝飾器import time # 裝飾器,記錄函數運行時間def decorator01(fun): def wapper(*args, **kwargs): # 使用非固定參數,無論參數是什么,都可以傳遞進來 stime = time.time() fun(*args, **kwargs) etime = time.time() print('fun run time is {TIME}'.format(TIME=etime - stime)) return wapper # 必須要返回一個函數的內存地址 # test01() = wapper(), 所以裝飾器加參數是給嵌套函數加參數@decorator01def test01(args1): time.sleep(2) print('參數是 {NAME} '.format(NAME=args1)) test01('侯征') # 不修改代碼和調用方式,實現添加記錄時間功能

三 裝飾器本身帶參數的裝飾器:

# 裝飾器import time # 如果裝飾器有參數,最外層是裝飾器的參數def decorator01(*args, **kwargs): print('裝飾器參數:', *args, **kwargs) def out(fun): #第二層才是接受的函數 def wapper(*args, **kwargs): # 使用非固定參數,無論參數是什么,都可以傳遞進來 stime = time.time() fun(*args, **kwargs) etime = time.time() print('fun run time is {TIME}'.format(TIME=etime - stime)) return wapper # 必須要返回一個函數的內存地址 return out # 要返回裝飾函數的內存地址 # 裝飾器本身帶參數,此時 decorator01(arg)=out,即相當于 @out裝飾test01,所以 test01=out(fun)=wapper@decorator01(1)def test01(args1): time.sleep(2) print('參數是 {NAME} '.format(NAME=args1)) test01('侯征') # 不修改代碼和調用方式,實現添加記錄時間功能

這種一開始挺難理解的,但是只要記住一點,@語法糖裝飾器的作用就是 給被裝飾的函數重新賦一個函數的內存地址,即裝飾器內部定義的那個

和你直接fun01=decorator(fun),然后 fun01()是一樣的,只是這樣寫不用改變原來調用方式

@decorator

def fun():

即就是 fun=decorator(fun) 所以,當裝飾器有參數時,還需要返回一個函數,這個函數才是用來裝飾作用的, decorator(1)=out, 即 fun=out(fun) !!

所以外面再包一層就行了,其實就相當于@decorator(1)=@out,即 decorator(1)=out ,實際裝飾器時out,只不過decorator(1)返回了一個out 這樣理解就簡單多了 ,無參的@就是起賦值作用

以上就是python裝飾器三種裝飾模式的簡單分析的詳細內容,更多關于python 裝飾模式的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 99国内视频 | 日本一级特黄啪啪片 | 日韩日韩日韩日韩日韩 | 国产乱码一区二区三区 | 国产美女精品三级在线观看 | 天天综合网天天综合色不卡 | 日本久久久久亚洲中字幕 | 中国美女黄色一级片 | 视频国产91 | 6699久久久久久久77777'7 66av99精品福利视频在线 | www.91在线播放 | 欧美日韩国产58香蕉在线视频 | 热re99久久国产精品 | 久久婷婷色| 国内自拍网红在线综合 | 亚洲精品一二三四 | 久久久这里有精品 | 黄色免费网站在线观看 | 看黄视频在线观看 | 亚洲精品国产专区91在线 | 亚洲欧美高清在线 | 五月天爱爱激情视频在线观看 | 欧美激情一区二区三区蜜桃视频 | 婷婷久久久五月综合色 | 999热成人精品国产免 | 国产日韩欧美中文 | 国产自产自拍 | 亚洲日本aⅴ片在线观看香蕉 | 亚洲精品久久一区二区无卡 | 国产精品理论片在线观看 | 国产福利视频一区美女 | 国产黄色a三级三级三级 | 日韩亚洲欧美性感视频影片免费看 | 日本一级毛片2021免费 | 日本一级片在线播放 | 日韩高清在线 | 天天撸影院 | 日韩激情淫片免费看 | 欧美日韩在线精品一区二区三区 | 高清免费国产在线观看 | 国产黄频在线观看高清免费 |