def myDecorator(...): #定義裝飾器,可能帶參數
def decorator(func): #裝飾器核心,以被裝飾的函數對象爲參數,返回裝飾後的函數對象
def wrapper(*args, **kvargs): #裝飾的過程,參數列表適應不一樣參數的函數
... #修改函數調用前的行爲
func(*args, **kvargs) #調用函數
... #修改函數調用後的行爲
return wrapper
return decorator
@myDecorator(...): #給函數加上裝飾器
def myFunc(...): #本身定義的功能函數
...app
def setTag(tag): #因爲此裝飾器須要參數,因此要再套一層
def myDecorator(func): #裝飾器的核心,接受函數對象作參數,返回包裝後的函數對象
def myWrapper(*arg, **kvargs): #包裝的具體過程
sign = "<" + tag + ">"
return sign + func(*arg, **kvargs) + sign
return myWrapper
return myDecorator函數
@setTag("div") #用@標籤在定義函數時套上裝飾器
def hello(name):
return 'hello' + name對象