1. 开放封闭原则:在不修改源代码及调用方式,对功能进行额外添加就是开放封闭原则

    1. 开放:对代码的扩展进行开发
    2. 封闭:修改源代码
  2. 装饰(额外功能) 器:工具(函数)

    1. 普通版:
    # print(time.time())	#时间戳,小数
    
    import time
    def func():
    time.sleep(1)
    print("这是小刚写的功能") def func():
    time.sleep(1)
    print("这是小红写的功能") def index():
    time.sleep(2)
    print("这是小明写的功能") def times(func): #func == index 函数内存地址
    def foo():
    start_time = time.time() #时间戳,被装饰函数执行前干的事
    func() #fun == index ,后面加括号就是调用函数
    print(time.time()-start_time)#被装饰函数执行后干的事
    return foo index = time(index) #index== foo内存地址
    index() #index() == foo ()
    func = time(func)
    func()

  1. python帮咱们做的一个东西,语法糖

    1. 要将语法糖放在装饰器的函数正上方

      # def warpper(f):
      # def inner():
      # print("111")
      # f()
      # print("222")
      # return inner
      #
      # @warpper # func = warpper(func)
      # def func():
      # print("被装饰的函数1")
      #
      # @warpper # index = warpper(index)
      # def index():
      # print("被装饰的函数2")
      #
      # func()
      # index() # def warpper(f):
      # def inner(*args,**kwargs):
      # print("被装饰函数执行前")
      # ret = f(*args,**kwargs)
      # print("被装饰函数执行后")
      # return ret
      # return inner
      #
      # @warpper
      # def func(*args,**kwargs):
      # print(f"被装饰的{args,kwargs}")
      # return "我是func函数"
      #
      # @warpper
      # def index(*args,**kwargs):
      # print(11111)
      #
      # print(func(1,2,3,4,5,6,7,8,a=1))

最新文章

  1. 动态令牌-(OTP,HOTP,TOTP)-基本原理
  2. android 第三方登录 --- QQ
  3. Linux下的shell编程(三)BY 四喜三顺
  4. 无法连接 MKS: Login(username/password)incorrect
  5. spring 部分配置内容备忘
  6. [webkit移动开发笔记]之如何去除android上a标签产生的边框(转)
  7. C# winform 代码生成
  8. Activemq 平台搭建与C#示列
  9. ubuntu 命令收集
  10. X64相关文章
  11. Java实现Socket之WhoisClient
  12. Buffer -nodejs
  13. 语音控制的tab选项卡
  14. C++中的初始化列表中可以对那些变量或对象进行初始化
  15. Basic4android:多功能的Android应用软件快速开发平台
  16. 关于centos 7 systemctl自定义服务笔记
  17. CoordinatorLayout与滚动的处理
  18. tp5.0.7 修复getshell漏洞
  19. javap反汇编命令
  20. 投入机器学习的怀抱?先学Python吧

热门文章

  1. 【转载】多网卡的7种bond模式原理
  2. 关于多个py文件生成一个可运行exe文件(用pyinstaller)
  3. UE4 使用VaRest的最佳实践
  4. BatchNormalization、LayerNormalization、InstanceNorm、GroupNorm、SwitchableNorm总结
  5. ubuntu开启ssh服务时,报:start:Unknown job : ssh
  6. mysql 链接数满了的错误 ERROR 1040 (HY000): Too many connections
  7. centOS7安装docker遇到 [Errno 14] curl#35 - "TCP connection reset by peer问题解决
  8. Express + Mongoose 极简入门
  9. python中的实例方法、类方法、静态方法的区别
  10. MQTT消息中间件Mosquitto的安装和配置