# 什么是装饰器
# 1,不修改源代码的情况,添加新功能
# 2,又可以用原函数名直接调用
# 3,装饰器实际上就是个闭包
1 def fun(func): #将要被装饰的函数名传给func 2 def decorator(*args,**kwargs): # 3 print("看看谁来了!!") #函数调用前执行的语句 4 func(*args,**kwargs) #完成用原函数名直接调用 5 print("他又走了!!") #函数调用后执行的语句 6 return decorator 7 @fun #语法糖,相当于fun1 = fun(fun1) 8 def fun1(): 9 print("我是fun1!") 10 @fun #fun2 = fun(fun2) 11 def fun2(): 12 print("我是fun2!") 13 14 fun1() 15 fun2()