迈向大神之路day009 闭包与装饰器
懂技术 按代码的行数 bug率
不懂 按照执行时间
装饰器
os 操作系统有关
import time
time.sleep()
time.time 1539934795.8942783 多少秒
import time
# def func():
# time.sleep(0.1)
# print("大伙好")
#
# def timer(): #计算函数的执行时间
# start=time.time()
# func()
# end=time.time()
# print(end-start)
# timer()
def timer(f): #计算函数的执行时间
start=time.time()
f()
end=time.time()
print(end-start)
def func():
time.sleep(0.1)
print("大伙好")
timer(func)
#闭包写法
装饰器的写法
import time
def func():
time.sleep(0.1)
print("大伙好")
def timer(f): #计算函数的执行时间 装饰器函数
def inner():
start=time.time()
f() #被装饰的函数
end=time.time()
print(end-start)
return inner
func=timer(func) ===@timmer
func()
#不修改函数调用 但是还想再原来的函数前后添加功能
#timer 就是一个装饰器函数 只是对一个函数 有一些修饰作用

原则:开发封闭原则
开发:对扩展是开发 封闭 对修改是封闭的
作用 在不改变原函数的调用方式的情况下 在函数的前后添加功能 (不能修改)
装饰器的本质 闭包函数
import time
@timmer @装饰器的函数名字
def func(): #被装饰器的函数
time.sleep(0.1)
print("大伙好")
def timer(f): #计算函数的执行时间 装饰器
def inner():
start=time.time()
f() #被装饰的函数
end=time.time()
print(end-start)
return inner
func()
#不修改函数调用 但是还想再原来的函数前后添加功能
#timer 就是一个装饰器函数 只是对一个函数 有一些修饰作用
### 装饰带参数的函数
记现象
复习 装饰器
example :
装饰器