亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python的裝飾器怎么用

發布時間:2022-01-13 09:34:25 來源:億速云 閱讀:160 作者:iii 欄目:大數據

這篇文章主要講解了“python的裝飾器怎么用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“python的裝飾器怎么用”吧!

1、實現a+b的功能

def A(a, b):    print(a + b)    return a + bif __name__ == "__main__":    A(1, 2)

2、現在我想函數A不變的情況下,實現a+2+b*2的功能  -- 函數帶參數或者參數數量不確定

def B(fun):    def C(*args):        a = args[0]+2        b = args[1]*2        return fun(a,b)    return C@Bdef A(a, b):    print(a + b)    return a + bif __name__ == "__main__":    A(1, 2)   輸出結果:7

(1)在main函數運行A(1,2)時,先進入裝飾器B中,并將a/b參數傳給*args(這里args可表示不限數量的變量輸入);在對參數a/b進行修改后,最后進入A函數進行 計算。

(2)函數B的入參是 fun,函數C的入參是 args,對應的實際值即為A(),(a,b)

3、在添加裝飾器后,又想繼續使用原函數功能 -- 裝飾器帶參數

def D(flag):    def B(fun):        def C(*args):            if flag:                a = args[0]+2                b = args[1]*2                return fun(a, b)            else:                return fun(*args)        return C    return B
@D(flag=False)def A(a, b):    print(a + b)    return a + b

if __name__ == "__main__":    A(1, 2)
輸出結果:3

通過flag字段的判斷,可以實現A()原功能或者A的增加功能。

這里要注意下,在原裝飾器B函數外面又加了一層函數D,為 了加深印象,可 以這樣理解:

D是為 了flag參數的,B是為了A()的,C是為了a/b參數的。對應的順序是基于flag/A/ab的上下文決定。

4、在寫完函數D后,發現又想 加新功能,怎么辦? -- 裝飾器疊羅漢。

# coding=utf-8# @Auther : "鵬哥賊優秀"# @Date : 2019/10/24# @Software : PyCharmdef D(flag):    def B(fun):        def C(*args):            print("我是D 裝飾器")            print("當前輸入值內容變為:", *args)            if flag:                a = args[0] + 2                b = args[1] * 2                return fun(a, b)            else:                return fun(*args)        return C    return B
def E(fun):    def F(*args):        print("我是E 裝飾器")        print("當前輸入值內容變為:",*args)        a = args[0] + 10        b = args[1] + 10        return fun(a, b)    return F
@D(flag=True)@Edef A(a, b):    print(a + b)    return a + b
if __name__ == "__main__":    A(1, 2)
輸出結果是:我是D 裝飾器當前輸入值內容變為:1 2我是E 裝飾器當前輸入值內容變為:3 427

當出現多個裝飾器,按順序分別進行對應功能的計算,因此根據以上示例代碼,先進行裝飾器D的計算,將a/b變為3/4;然后進入裝飾器E的計算,將a/b變為了13/14,最后進入A()函數,并輸出27。

感謝各位的閱讀,以上就是“python的裝飾器怎么用”的內容了,經過本文的學習后,相信大家對python的裝飾器怎么用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

蓬溪县| 化州市| 临洮县| 江山市| 界首市| 南皮县| 阿拉尔市| 英超| 大冶市| 准格尔旗| 贵南县| 民勤县| 玉山县| 阿坝县| 大安市| 方正县| 南乐县| 萨嘎县| 原平市| 泗阳县| 浦北县| 遵义县| 会东县| 永宁县| 洛南县| 白沙| 乐都县| 新绛县| 平泉县| 乐亭县| 手游| 兴业县| 阿巴嘎旗| 康保县| 乐至县| 自治县| 绵阳市| 台安县| 榆林市| 玉门市| 屏南县|