大家好,我是楊數Tos,這是《從零基礎到大神》系列課程的第X篇文章,第三階段的課程:Python進階知識:Python進階知識:詳細講解Python中的函數(十)====> 函數的嵌套之裝飾器詳解(下篇)。
函數是非常重要的內容,在這裡,我會用10篇左右的文章詳細講解Python中函數定義與使用的規則。
閱讀提醒:建議小白先看一遍:【計算機基礎知識】和【Python基礎知識】課程,否則你不一定聽得懂!
一、裝飾器的魔法「糖」
1、用法
在Python中提供了一個裝飾器的簡潔用法,即:在需要被裝飾的方法前面@裝飾器名稱即可;
用法:
@裝飾器名稱
被裝飾對象
例如:
@inner 這一句就等同於fun = inner(fun);
2、執行過程
@裝飾器名稱
當Python解釋器遇到@時,會將被裝飾對象當作參數,傳遞給裝飾器,並將最終的賦值返回給被裝飾對象;
二、多個裝飾器
1、多個裝飾器的用法
用多層裝飾器達到效果;(建議:裝飾器的層數最多不要超過3個,因為裝飾器的個數過多只會增加程序的複雜性,讓程序的可讀性降低)
格式:
@裝飾器1
@裝飾器2
被裝飾對象
2、執行過程
多個裝飾器,加載順序從被裝飾對象最近的開始,先執行裝飾器2,再執行裝飾器1;
例如:
@fun1
@fun2
def fu(x):
print("被裝飾對象{}".format(x))
它的執行過程如下:
@fun2 等同於:fun2內的wrp內存地址 = fun2(fu)
@fun1等同於:fun1內的wrp的內存地址=fun1(fun2內的wrp內存地址);
① 整個執行過程是先調用了fun2內裝飾器的功能,將結果返回;
② 再調用fun1內的裝飾器的功能,並將前面執行的結果當作參數傳給fun1,然後返回結果;
③ 最後,執行被裝飾對象的代碼;結束程序運行!
最後,還一種多層有參裝飾器的用法,因為我們一般使用得比較少,只會在後期的實戰案例中體現。
以上是本期內容,如果有表達不對的內容,歡迎您的留言、斧正,我們一起天天向上。
感謝您的閱讀,您的三連【關注、點讚、收藏】就是對我最大的支持,謝謝!
本文由楊數Tos原創,歡迎關注,帶你一起長知識。