1.今日内容大纲
- 开放封闭原则
- 初识装饰器
- 被装饰函数带返回值
- 被装饰函数带参数
- 标准版装饰器
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()
-
被装饰函数带返回值
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()
-
被装饰函数带参数
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()
-
标准版装饰器
def wrapper(f): def inner(*args,**kwar): ret = f(*args,**kwargs) return ret return inner