亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術(shù)文章
文章詳情頁

Python裝飾器如何實現(xiàn)修復(fù)過程解析

瀏覽:3日期:2022-07-12 10:06:48

Python裝飾器(decorator)在實現(xiàn)的時候,被裝飾后的函數(shù)其實已經(jīng)是另外一個函數(shù)了(函數(shù)名等函數(shù)屬性會發(fā)生改變),

為了不影響,Python的functools包中提供了一個叫wraps的decorator來消除這樣的副作用。寫一個decorator的時候,最好在實現(xiàn)之前加上functools的wrap,

它能保留原有函數(shù)的名稱和docstring。

未加@wraps的時候:

from functools import wrapsdef wrapper(func): # @wraps(func) def inner(*args, **kwargs): print('裝飾器工作中...') func(*args, **kwargs) return inner@wrapperdef f1(arg): ''' 這是一個測試裝飾器修復(fù)技術(shù)的函數(shù) :param arg: 隨便傳 :return: 沒有 ''' print(arg)f1(’呵呵’)print(f1.__name__,f1.__doc__)

打印結(jié)果是:

Python裝飾器如何實現(xiàn)修復(fù)過程解析

但是加上@wraps以后:

from functools import wrapsdef wrapper(func): @wraps(func) def inner(*args, **kwargs): print('裝飾器工作中...') func(*args, **kwargs) return inner@wrapperdef f1(arg): ''' 這是一個測試裝飾器修復(fù)技術(shù)的函數(shù) :param arg: 隨便傳 :return: 沒有 ''' print(arg)f1(’呵呵’)print(f1.__name__,f1.__doc__)

打印結(jié)果是:

Python裝飾器如何實現(xiàn)修復(fù)過程解析

其中主要的就是兩個變量:

1、顯示 正在執(zhí)行的函數(shù)的名稱 f.name

2、顯示 正在執(zhí)行的函數(shù)的注釋 f.doc

簡單來說就是:

如果沒使用@wraps,當(dāng)A調(diào)用了裝飾器B的話,即使A.name,返回的會是裝飾器B的函數(shù)名稱,而不是A的函數(shù)名稱

如果使用了@wraps,當(dāng)A調(diào)用了裝飾器B的話,A.__ name__返回的會是A函數(shù)的名稱,而不是飾器B的名稱,

這也即使常說的@wraps是裝飾器的修復(fù)技術(shù),

實際就是修復(fù)還原了A的__ name__變量,同理__ doc__變量也是一樣。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 国产精品黄页在线播放免费 | 午夜在线观看视频免费 成人 | 国产美女视频黄a视频全免费网站 | 免费人成网站免费看视频 | 丰满老熟女毛片 | 成人在线综合 | 亚洲欧美一区二区三区久本道 | 欧美一级毛片片aa视频 | 亚洲欧美视频在线播放 | 一级做a爱过程免费视频时看 | 夜色伊人 | 手机看片77v1| 日韩欧美视频一区 | 久久99精品视频在线在线观看 | 日韩黄色在线 | 91av成年影院在线播放 | 久久91亚洲精品中文字幕奶水 | 香蕉tv亚洲专区在线观看 | 亚洲三级在线看 | 国产乱弄视频在线观看 | 欧美一级成人免费大片 | 99爱视频99爱在线观看免费 | 岛国伊人 | 日本巨乳中文字幕 | 国产亚洲精品精品国产亚洲综合 | 久久se精品一区精品二区 | 一a一级片 | 大狠狠大臿蕉香蕉大视频 | 一区二区三区在线播放 | 精品欧美高清不卡在线 | 国产成在线观看免费视频成本人 | 精品欧美一区二区三区免费观看 | 综合网自拍 | 毛片免费在线观看网址 | 日产一一到六区网站免费 | 久久视频在线观看免费 | 欧美一级一极性活片免费观看 | 欧美a级完整在线观看 | 国内精品久久久久久久久蜜桃 | 日韩 欧美 国产 师生 制服 | 精品久久久久久中文字幕一区 |