从入门到自闭之python三大器--装饰器

  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()
    

    1757217-20190905090610356-788450047.png

  3. 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))

    1757217-20190905090738376-667658667.png

1757217-20190905090901382-1443605431.png

1757217-20190905090913441-1730920296.png

1757217-20190905090924367-1238302399.png

1757217-20190905090944409-1813935450.png

1757217-20190905090958365-1408116724.png

1757217-20190905091011421-155449360.png

1757217-20190905091018460-1419591992.png

1757217-20190905090930391-1381977478.png

转载于:https://www.cnblogs.com/heyulong1214/p/11462929.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值