最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python3?最常用的三種裝飾器語法匯總

 更新時間:2022年06月28日 09:34:22   作者:ChengRuoFei  
這篇文章主要介紹了python3?最常用的三種裝飾器語法總結(jié),本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

python3 最常用的三種裝飾器語法總結(jié)

1.簡述語法

裝飾器也叫函數(shù)裝飾器,主要作用是在不修改原來函數(shù)的代碼情況下(函數(shù)本身不會被修改,執(zhí)行方式也不變化),增加的一個"裝飾"函數(shù),把原來的函數(shù)當(dāng)成一個整體,像傳參一樣給這個函數(shù)使用,并返回這個"函數(shù)"。這個過程中我們增加一些函數(shù)相關(guān)的代碼,當(dāng)函數(shù)被執(zhí)行的時候,就會一起執(zhí)行,相當(dāng)于讓函數(shù)增加了更多的功能。
常用的方面:
1.1為函數(shù)增加日志記錄功能:許多函數(shù)寫的時候,并沒有寫日志記錄功能,通過統(tǒng)一添加日志記錄的裝飾器,就無需更改代碼,從而實現(xiàn)記錄的功能。
1.2為函數(shù)實現(xiàn)驗證功能:函數(shù)執(zhí)行的時候,增加驗證是否合規(guī)的裝飾器,這是一些安全的措施,有時候非常必要。
1.3補(bǔ)救函數(shù)功能:項目結(jié)束后,發(fā)現(xiàn)重大BUG,可以通過過增加裝飾器的方式修復(fù),大量降低工作量。

2.不帶參數(shù)的函數(shù)的裝飾器

理解:@符號就是寫一個裝飾器,最基本的裝飾器,就是寫一個函數(shù),并返回一個傳入的參數(shù)。本質(zhì)就是把整個函數(shù)當(dāng)成了參數(shù),并返回,這個過程沒有執(zhí)行函數(shù),只增加了一個描述信息,如:國家。

def mycountry(m):
    country = "china"
    print(country)
    return m
 
@mycountry
def myname():
    name = "chengruofei"
    print(name)
    return name
myname()

執(zhí)行結(jié)果:

python myname.py 
china
chengruofei

備注:
把@符號理解成省略了第一步的賦值,會不會豁然開朗:
myname = mycountry(myname)
myname()

3.帶參數(shù)的函數(shù)的裝飾器

**理解:**只需要在裝飾器函數(shù)中,增加一個函數(shù),并且里面一定要組合傳入的“兩個參數(shù)”為新的函數(shù),此時返回值就變成了構(gòu)造的函數(shù)。

def mycountry(m):
    country = "china"
    print(country)
    def myb(bb):
        m(bb)
        print("TEST boy")
    return myb
    
@mycountry
def myname(b):
    name = "chengruofei"
    print(name)
    print("I am a :",b)
    return name
myname("boy")

執(zhí)行結(jié)果:

china
chengruofei
('I am a :', 'boy')
TEST boy

備注:
通過裝飾器的函數(shù)返回值,就丟失了。

4.帶參數(shù)的裝飾器

**理解:**本來裝飾器是沒有參數(shù)的,參數(shù)是根據(jù)函數(shù)的定義與否去設(shè)定的。但是有時候裝飾器是個復(fù)雜的函數(shù),集合了大量的功能,就需要帶入?yún)?shù)去執(zhí)行合適的裝飾器函數(shù)。只需要在原本的解釋器外層加上一層函數(shù),并將中間層函數(shù)作為整體返回。

def myID(i):
    if i == 'mycountry':
       def mycountry(m):
           country = "china"
           print(country)
           def myb(bb):
               m(bb)
               print("TEST boy")
           return myb
       return mycountry 
    else:
       def myschool(m):
           school = "shijiazhuangjisuanjizhiyejishuxueyuan"
           print("I graduated from ",school)
           def myb(bb):
               m(bb)
               print("TEST boy")
           return myb
       return myschool
@myID('myschool')
def myname(b):
    name = "chengruofei"
    print(name)
    print("I am a :",b)
    return name
myname("boy")

執(zhí)行結(jié)果:

('I graduated from ', 'shijiazhuangjisuanjizhiyejishuxueyuan')
chengruofei
('I am a :', 'boy')
TEST boy

到此這篇關(guān)于python3 最常用的三種裝飾器語法總結(jié)的文章就介紹到這了,更多相關(guān)python3裝飾器語法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用Python對文件夾下圖片數(shù)據(jù)進(jìn)行批量改名的代碼實例

    利用Python對文件夾下圖片數(shù)據(jù)進(jìn)行批量改名的代碼實例

    今天小編就為大家分享一篇關(guān)于利用Python對文件夾下圖片數(shù)據(jù)進(jìn)行批量改名的代碼實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • python訪問類中docstring注釋的實現(xiàn)方法

    python訪問類中docstring注釋的實現(xiàn)方法

    這篇文章主要介紹了python訪問類中docstring注釋的實現(xiàn)方法,涉及python類注釋的訪問技巧,非常具有實用價值,需要的朋友可以參考下
    2015-05-05
  • 關(guān)于Python核心框架tornado的異步協(xié)程的2種方法詳解

    關(guān)于Python核心框架tornado的異步協(xié)程的2種方法詳解

    今天小編就為大家分享一篇關(guān)于Python核心框架tornado的異步協(xié)程的2種方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • django為Form生成的label標(biāo)簽添加class方式

    django為Form生成的label標(biāo)簽添加class方式

    這篇文章主要介紹了django為Form生成的label標(biāo)簽添加class方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python實現(xiàn)微信小程序的多種支付方式

    python實現(xiàn)微信小程序的多種支付方式

    這篇文章主要為大家介紹了python實現(xiàn)微信小程序的多種支付方式的實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • Python 循環(huán)語句之 while,for語句詳解

    Python 循環(huán)語句之 while,for語句詳解

    Python中有兩種循環(huán),分別為:for循環(huán)和while循環(huán)。 for循環(huán)可以遍歷任何序列的項目,如一個列表或者一個字符串。while 語句用于循環(huán)執(zhí)行程序,即在某條件下,循環(huán)執(zhí)行某段程序,以處理需要重復(fù)處理的相同任務(wù)。
    2018-04-04
  • Python基本結(jié)構(gòu)之判斷語句的用法詳解

    Python基本結(jié)構(gòu)之判斷語句的用法詳解

    在程序的設(shè)計當(dāng)中,代碼并不是逐步按照順序進(jìn)行執(zhí)行的,在運(yùn)行到某一行代碼當(dāng)中,需要停下進(jìn)行判斷接下來將要運(yùn)行到那一個分支代碼,這種判斷就代表的是分支結(jié)構(gòu)。分支結(jié)構(gòu)是可以使用?if?語句來進(jìn)行判斷的,而我們本篇博客講的也是?if?語句,需要的可以了解一下
    2022-07-07
  • Python打印輸出數(shù)組中全部元素

    Python打印輸出數(shù)組中全部元素

    使用Python打印數(shù)組時會遇到一個問題,當(dāng)打印的數(shù)組元素比較多時,會出現(xiàn)只打印出數(shù)組開始與結(jié)尾部分中間部分用省略省略了,下面的方法可以完美解決這個問題
    2018-03-03
  • Django重裝mysql后啟動報錯:No module named ‘MySQLdb’的解決方法

    Django重裝mysql后啟動報錯:No module named ‘MySQLdb’的解決方法

    這篇文章主要給大家介紹了關(guān)于Django重裝mysql后啟動報錯:No module named ‘MySQLdb’的解決方法,分享出來,對同樣遇到這個問題的朋友們一個參考學(xué)習(xí),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • Pandas操作MySQL的方法詳解

    Pandas操作MySQL的方法詳解

    這篇文章主要介紹了如何使用Pandas來操作MySQL數(shù)據(jù)庫。主要是包含查詢MySQL中的數(shù)據(jù),以及如何往數(shù)據(jù)庫中寫入數(shù)據(jù),感興趣的小伙伴可以了解一下
    2022-08-08

最新評論

建始县| 隆尧县| 三河市| 洛宁县| 嘉义县| 新郑市| 顺义区| 内黄县| 华阴市| 泰宁县| 柳州市| 深泽县| 乌拉特前旗| 江西省| 德州市| 昌图县| 长宁区| 嫩江县| 玉门市| 哈尔滨市| 长葛市| 嫩江县| 宣威市| 集贤县| 新疆| 浑源县| 湘潭市| 济宁市| 历史| 武乡县| 大港区| 保定市| 淄博市| 绥宁县| 西宁市| 衡山县| 临清市| 尼勒克县| 玛纳斯县| 建昌县| 营山县|