首页 > 编程语言 > 详细

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

时间:2019-09-05 09:51:42      阅读:58      评论:0      收藏:0      [点我收藏+]
  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()
    

    技术分享图片

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

    技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

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

原文:https://www.cnblogs.com/heyulong1214/p/11462929.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!