使用Python裝飾器實現(xiàn)修復(fù)的方法?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
成都創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)惠山,10多年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108Python裝飾器(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 wraps def wrapper(func): # @wraps(func) def inner(*args, **kwargs): print("裝飾器工作中...") func(*args, **kwargs) return inner @wrapper def f1(arg): """ 這是一個測試裝飾器修復(fù)技術(shù)的函數(shù) :param arg: 隨便傳 :return: 沒有 """ print(arg) f1('呵呵') print(f1.__name__,f1.__doc__)