zoukankan      html  css  js  c++  java
  • Python编程系列---装饰器执行的底层原理及流程

    代码中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()函数

    如果你和我有共同爱好,我们可以加个好友一起交流!

     

  • 相关阅读:
    如何处理数集据不平衡的问题
    xgb&lgb&ctb区别
    LDA与gibbs采样
    撸了一个 Feign 增强包
    行为驱动模型-Behave
    MySQL 主从复制常见错误答疑
    POJ 1191
    POJ 1141
    HDU 1754
    POJ 3468
  • 原文地址:https://www.cnblogs.com/ywk-1994/p/9502706.html
Copyright © 2011-2022 走看看