代码中No.1 No.2 ...表示执行流程
1 """No.1 No.2 ...表示执行流程""" 2 3 def set_func(func): # <No.1-1>:func = show---->作用:func 指向原show 函数 , 4 def wrapper(*args, **kwargs): 5 print("装饰器功能1") # <No.3>:"装饰器功能1" 6 return func(*args, **kwargs) # <No.4>最重要理解的地方:此处的func 指向了show原来的函数内容,func()--->打印"----hello----" 7 8 return wrapper # <No.1-2>:show = wrapper--->作用:show指向了wrapper 9 10 11 @set_func # <No.1>:show =set_func(show1)--->作用:将func指向了show,再将show指向了wrapper
12 def show(): 13 print("----hello----") # <No.5>:打印"----hello----" 14 15 16 show() # <No.2>:开始执行show 但show 指向了wrarrpe 即开始执行wrapper 17 18 19 结果如下: 20 装饰器功能1 21 ----hello---- 22 23 进程已结束,退出代码 0
最后一条重要的结论:被装饰的函数永远指向内wrapper()函数
如果你和我有共同爱好,我们可以加个好友一起交流!