新聞中心
今天才發(fā)現(xiàn)裝飾器的另一種用法,下面就先上代碼:

洪洞網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、APP開發(fā)、成都響應式網(wǎng)站建設等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)建站自2013年起到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設就選創(chuàng)新互聯(liá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)
代碼很簡單就是,定義三個foo開頭的函數(shù),每個foo函數(shù)輸出不一樣的數(shù)字,都通過裝飾器data_item進行修飾,最后通過max_item函數(shù),執(zhí)行一系列邏輯獲取結(jié)果。
這里有個容易被忽略的點,那就是裝飾器實際是在執(zhí)行 max_item()之前就執(zhí)行了。
所以,如果你打印下data_list你會發(fā)現(xiàn)它是有值的。
- [
, , ]
即列表里面已經(jīng)有三個被裝飾器修飾的函數(shù)了,然后在
- max(i() for i in data_list)
的i()階段這三個函數(shù)執(zhí)行了,得到了結(jié)果(1,2,3),然后最后取它們的max值即3。
什么場景會用到呢,一般對于傳入一個值然后多種處理方案,選擇其中優(yōu)秀方案的時候可以考慮使用這種方法。
emmm,裝飾器還是挺有意思的。
本文名稱:你可能不知道的Python裝飾器
網(wǎng)頁URL:http://m.fisionsoft.com.cn/article/codjedh.html


咨詢
建站咨詢
