什么是装饰器语法糖
装饰器语法糖属于装饰器的
注意:在使用装饰器语法糖时,装饰器必须定义在被装饰对象之上
import time
# 统计函数执行时间装饰器
def wrapper(func): # 被装饰对象
def inner(*args, **kwargs): # 被装饰对象的参数
# 调用前增加新功能
start_time = time.time()
# 调用被装饰对象,并接收返回值
res = func(*args, **kwargs)
# 调用后添加新功能
end_time = time.time()
print(end_time - start_time)
return res
return inner
# func函数需要执行3秒
# 无参装饰器
# 使用装饰器
@wrapper # wrapper(func) ---> func
def func():
time.sleep(3)
# 不用装饰器
def func2():
time.sleep(3)
func()
计算程序的运行时间(利用函数的语法糖)
import time
def time_timer(func):
def inner():
start_time = time.time()
res = func()
end_time = time.time()
print(f'消耗了:{end_time - start_time}')
return res
return inner
@time_timer
def download_movie():
print('开始下载电影...')
time.sleep(3)
print('下载完毕...')
return '小泽.mp4'
download_movie()