装饰器
- 封闭:已实现的功能代码块不应该被修改
- 开放:对现有功能的扩展开放
#装饰器编写格式
def 外层函数(参数):
def 内层函数(*args,**kwargs):
# 参数(*args,**kwargs)
return 参数(*args,**kwargs)
return 内层函数
#装饰器应用格式0
@外层函数
def 需要被装饰的函数():
pass
需要被装饰的函数()
#装饰器标准写法
def x(func):
def y():
func()
#或者ret = func()
# return ret
return y
@x
def z():
pass
z()
应用例子:
import time
def run(arg):
def timmer():
print("timmer函数执行开始\n")
start_time = time.time()
arg()
stop_time = time.time()
run_time = stop_time - start_time
print(run_time,"\n")
print("timmer函数执行完毕")
return timmer
# 第一步:执行run函数并将下面被装饰的函数作为参数传递到run函数里。相当于:run(func),r
# run函数的形参arg指向了func里面的代码
# 第二步:将run函数的返回值重新赋值给下面被装饰的func函数名。相当于:func = run(func)
@run
def func():
print("正在执行func函数")
time.sleep(1)
func()