装饰器
原则:开放封闭
作用:在不改变原函数的调用方式情况下,在函数的前后添加功能
本质:闭包函数
import time def func(): time.sleep(1) print('Hello World') def timmer(f): def inner(): f() print(time.strftime("%Y-%m-%d")) return inner func = timmer(func) func()
timmer 为装饰器
闭包函数 - 在内部函数引用外部函数的变量
装饰器函数 - 一定是闭包函数
def wrapper(func): #此时func 为qqxing def inner(*args,**kwargs): ret = func(*args,**kwargs) return ret return inner @wrapper #此时qqxing 为 inner #qqxing = wrapper(qqxing) def qqxing(a,b): print(123,a,b) return '新年好' @wrapper def qqxing2(*args): print(*args) return '新年快乐' ret = qqxing(1,b=3) #inner() print(ret) ret = qqxing2(1,2,3,4,5) print(ret)