今日上课内容(2020-3-11):
1.装饰器的形成过程:最简单的装饰器,有返回值的,有一个参数,万能参数
2.装饰器的作用
3.原则:开放封闭原则
4.装饰器的固定模式
5.语法糖:@
import time
time.sleep(3)
def func():
print('Good morning everybody! Welcome back to your class!')
func()
Good morning everybody! Welcome back to your class!
# 完成计算函数运行的时间
def func():
start = time.time()
print('Hello')
time.sleep(6)
end = time.time()
print(end - start)
func()
Hello
6.001676321029663
def timmer(f):
start = time.time()
f()
end = time.time()
print(end - start)
def func():
time.sleep(6)
print('Hello')
timmer(func)
Hello
6.00213360786438
import time
def func():
time.sleep(0.01)
print('Hello')
def timmer(f):
def inner():
start = time.time()
f()
end = time.time()
print(end - start)
return inner
func = timmer(func)
func()
Hello
0.011965513229370117
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PI5a7axw-1584025718739)(attachment:image.png)]
上图以说明程序的运行过程
f()就是被装饰的函数 而inner是没有返回值的,而inner被传给了func
出现在装饰器函数里的并不是参数,而是被装饰的函数
#完整的装饰器
def wrapper(func):
def inner():
ret = func(*args,**kwargs)
return ret
return inner
@wrapper
def qqxing():
print(5656)
#当我下一IC执行qqxing函数时候,实际上执行的就是inner,因为他返回的是inner函数