1. 程式人生 > >python 基礎篇 12 裝飾器進階

python 基礎篇 12 裝飾器進階

基礎篇 基礎 寫法 **kwargs 就是 聚合 接收 參數 python 基礎

本節主要內容:
1. 通?裝飾器回顧
2. 函數的有?信息
3. 帶參數的裝飾器
4. 多個裝飾器同時裝飾?個函數

?. 通?裝飾器的回顧
開閉原則: 對增加功能開放. 對修改代碼封閉
裝飾器的作?: 在不改變原有代碼的基礎上給?個函數增加功能
通?裝飾器的寫法:

技術分享圖片

執行過程:

其實執行 target_func()就是執行inner函數. inner函數會先執行目標函數之前的代碼,然後執行目標函數,之後再執行目標函數之後的代碼.

如何獲取函數的有用信息:

技術分享圖片

函數名.__name__可以查看函數名字

函數名.__doc__可以查看函數文檔註釋

技術分享圖片

技術分享圖片

雖然調用的是target_func函數,但是打印出來的卻是inner函數,這個難免會給我誤解,所以我們要改回去

技術分享圖片

PS: *args**kwargs什麽時候打散, 什麽時候聚合
1. 接收參數的時候是聚合, 參數聲明
2. 傳遞參數的時候是打散, 給函數傳遞實參

技術分享圖片

技術分享圖片

三--裝飾器傳參

技術分享圖片

技術分享圖片

執行順序: 先執行wrapper_out(False), 返回值是wrapper,然後再@wrapper 還是和之前的裝飾器一樣,一次執行.

. 多個裝飾器裝飾同?個函數
先讀?下這樣?個代碼.

技術分享圖片

技術分享圖片

這個順序可以自己捋捋 先執行裝飾器1, 然後執行裝飾器2

python 基礎篇 12 裝飾器進階