python裝飾器的特性原理詳解
這篇文章主要介紹了python裝飾器的特性原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
今天發(fā)現(xiàn)了裝飾器的另一種用法,下面就先上代碼:
data_list = [] def data_item(func): data_list.append(func) return func @data_item def foo(): return 1 @data_item def foo1(): return 2 @data_item def foo3(): return 3 def max_item(): result = max(i() for i in data_list) return result if __name__ == '__main__': item = max_item() print(item)
代碼很簡(jiǎn)單就是,定義三個(gè)foo開頭的函數(shù),每個(gè)foo函數(shù)輸出不一樣的數(shù)字,都通過裝飾器data_item進(jìn)行修飾,最后通過max_item函數(shù),執(zhí)行一系列邏輯獲取結(jié)果。
這里有個(gè)容易被忽略的點(diǎn),那就是裝飾器實(shí)際是在執(zhí)行 max_item()之前就執(zhí)行了。
所以,如果你打印下data_list你會(huì)發(fā)現(xiàn)它是有值的。
[<function foo at 0x10bb05ea0>, <function foo1 at 0x10bb05d90>, <function foo3 at 0x10bb05f28>]
即列表里面已經(jīng)有三個(gè)被裝飾器修飾的函數(shù)了,然后在
max(i() for i in data_list)
的i()階段這三個(gè)函數(shù)執(zhí)行了,得到了結(jié)果(1,2,3),然后最后取它們的max值即3。
什么場(chǎng)景會(huì)用到呢,一般對(duì)于傳入一個(gè)值然后多種處理方案,選擇其中最佳方案的時(shí)候可以考慮使用這種方法。
emmm,裝飾器還是挺有意思的。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
教你用Python實(shí)現(xiàn)簡(jiǎn)易版學(xué)生信息管理系統(tǒng)(含源碼)
學(xué)生管理信息系統(tǒng)主要用來日常查詢學(xué)生信息,以及及時(shí)更新數(shù)據(jù)和修改數(shù)據(jù).用python實(shí)現(xiàn)簡(jiǎn)單學(xué)生管理信息系統(tǒng)不僅可以滿足以上要求,也可以鞏固之前學(xué)習(xí)的基礎(chǔ),需要的朋友可以參考下2021-06-06
在pycharm中輸入import torch報(bào)錯(cuò)如何解決
這篇文章主要介紹了在pycharm中輸入import torch報(bào)錯(cuò)如何解決問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
簡(jiǎn)單了解python中的f.b.u.r函數(shù)
這篇文章主要介紹了簡(jiǎn)單了解python中的f.b.u.r函數(shù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
Python?matplotlib實(shí)現(xiàn)多子圖布局
多子圖布局是指在一個(gè)圖像中同時(shí)顯示多個(gè)子圖,每個(gè)子圖可以是獨(dú)立的圖形或者是相互關(guān)聯(lián)的圖形,下面我們就來了解下matplotlib是如何實(shí)現(xiàn)多子圖布局的吧2023-12-12
Tensorflow tf.tile()的用法實(shí)例分析
這篇文章主要介紹了Tensorflow tf.tile()的用法實(shí)例分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-05-05
Python使用Scapy實(shí)現(xiàn)構(gòu)造特殊數(shù)據(jù)包
Scapy是一款Python庫,可用于構(gòu)建、發(fā)送、接收和解析網(wǎng)絡(luò)數(shù)據(jù)包,這篇文章主要為大家詳細(xì)介紹了python如何使用Scapy構(gòu)造特殊數(shù)據(jù)包,有需要的可以參考下2023-11-11

