真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

python的裝飾器怎么用

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

我們提供的服務有:成都做網站、成都網站設計、微信公眾號開發(fā)、網站優(yōu)化、網站認證、武安ssl等。為上千余家企事業(yè)單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的武安網站制作公司

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、在添加裝飾器后,又想繼續(xù)使用原函數功能 -- 裝飾器帶參數

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后,發(fā)現又想 加新功能,怎么辦? -- 裝飾器疊羅漢。

# coding=utf-8# @Auther : "鵬哥賊優(yōu)秀"# @Date : 2019/10/24# @Software : PyCharmdef D(flag):    def B(fun):        def C(*args):            print("我是D 裝飾器")            print("當前輸入值內容變?yōu)椋?, *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("當前輸入值內容變?yōu)椋?,*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 裝飾器當前輸入值內容變?yōu)椋? 2我是E 裝飾器當前輸入值內容變?yōu)椋? 427

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

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


網頁題目:python的裝飾器怎么用
路徑分享:http://weahome.cn/article/jedodj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部