Python高階之修飾器
阿新 • • 發佈:2019-02-19
裝飾器是程式開發中經常會⽤到的⼀個功能,⽤好了裝飾器,開發效率如⻁ 添翼,所以這也是Python⾯試中必問的問題。
寫程式碼要遵循 開放封閉 原則,雖然在這個原則是⽤的⾯向物件開發,但是也 適⽤於函數語言程式設計,簡單來說,它規定已經實現的功能程式碼不允許被修改, 但可以被擴充套件,即:
現有如下程式碼塊:
# coding = 'utf-8'
def fun2():
print('----fun2----')
fun2()
可以看出來fun2()函式是已經封裝好的,如果我們想為其新增功能,例如新增一行輸出,“修飾器執行”,如果直接修改函式內部程式碼,其實是不符合規範的,並且在程式碼很多的時候容易出錯,因此引入修飾器,程式碼如下:
# coding = 'utf-8'
def funtion(f):
def fun():
print('修飾器執行')
f()
return fun
@funtion
def fun2():
print('----fun2----')
fun2()
通過閉包,將函式地址作為引數傳遞給閉包,本來fun2指向fun2()這一函式,但是經過閉包,其先指向了fun()之後再執行本身,輸出如下:
修飾器執行
----fun2----
***Repl Closed***
這便是對修飾器的簡單介紹。