? ? Python 中的裝飾器是一種語法糖,可以在運行時,動態的給函數或類添加功能。裝飾器本質上是一個函數,使用 @ + 函數名就是可實現綁定給函數的第二個功能 。它的作用就是在不修改被裝飾對象源代碼和調用方式的前提下為被裝飾對象添加額外的功能。
? ? 普通調用的寫法,把 my_func 作為 calc() 的參數直接調用。
def my_func():print('Hello World')def calc(func):y = 3 + 5func()print(y)calc(my_func)
? ? 考慮到當要增加某些功能時,導致相關的調用都要修改,這時裝飾器就起到作用了。
def calc(func):def pack():y = 3 + 5func()print(y)return pack@calc
def my_func():print('Hello World')my_func()