#返回顶部按钮 #生成一个目录导航

1.今日内容大纲

  1. 开放封闭原则
  2. 初识装饰器
  3. 被装饰函数带返回值
  4. 被装饰函数带参数
  5. 标准版装饰器

2.今日内容

  1. 开放封闭原则

    1. 软件面世时,不可能把所有功能都设计好,当前的未来一两年功能给你上线,定期更新迭代。对于软件之前写的源代码一般都不会修改,函数里面的代码以及函数的调用方式
    2. 开放原则:在源码不改变的情况下,增加一些额外的功能
    3. 封闭原则:不要改变源码
    4. 装饰器:完美的诠释了开放封闭原则
      • 装饰器就是一个函数,在不改变原函数的代码以及调用方式的前提下,为其增加信的功能
  2. 初识装饰器

    import time
    def times(f):
      def inner():
        start_time = time.time()
        f()
        end_time = time.time()
      return inner
    def index():
      time.sleep(2)
      print(666)
    index = times(index)
    index()
    
    #优化
    @times
    def index():
      time.sleep(2)
      print(666)
    index()
    
  3. 被装饰函数带返回值

    import time
    def times(f):
      def inner():
        start_time = time.time()
        ret = f()
        end_time = time.time()
        return ret
      return inner
    @times
    def inner():
      time.sleep(2)
      print(666)
      return 888
    inner()
    
  4. 被装饰函数带参数

    import time
    def times(f):
      def inner(*args,**kwargs):
        start_time = time.time()
        ret = f(*args,**kwargs)
        end_time = time.time()
        return ret
      return inner
    @times
    def index(name):
      time.sleep(2)
      print(f'{name}666')
      return 888
    index()
    
  5. 标准版装饰器

    def wrapper(f):
      def inner(*args,**kwar):
        ret = f(*args,**kwargs)
        return ret
      return inner
    
posted on 2019-12-02 16:29  xingchenck  阅读(506)  评论(0编辑  收藏  举报