》基本装饰器没有参数没有返回值
》当功能函数有返回值的情况下
解决返回值的问题
基本装饰器返回值处理不了import time
# 装饰器函数
def cont_time(func):
"""统计时间的装饰器"""
def inner():
start_time = time.time()
print('计时开始。。。')
func()
end_time = time.time()
print('计时结束,总共耗时{:.2f}秒'.format(end_time - start_time))
return inner
# 功能函数
@cont_time # 相当于 do_work = cont_time(do_word)
def do_work():
"""有耗时的函数"""
print('do_work开始')
time.sleep(1)
print('do_work结束')
return 'work is done' # !返回值需要传递
res = do_work()
print(res)
结果
C:\Users\python_hui\Anaconda3\python.exe G:/test/a/1.py
计时开始。。。
do_work开始
do_work结束
计时结束,总共耗时1.01秒
None
Process finished with exit code 0
解决装饰器返回值的问题import time
# 装饰器函数
def cont_time(func):
"""统计时间的装饰器"""
def inner():
start_time = time.time()
print('计时开始。。。')
res = func() # !这里接收
end_time = time.time()
print('计时结束,总共耗时{:.2f}秒'.format(end_time - start_time))
return res # !这里返回
return inner
# 功能函数
@cont_time # 相当于 do_work = cont_time(do_word)
def do_work():
"""有耗时的函数"""
print('do_work开始')
time.sleep(1)
print('do_work结束')
return 'work is done' # 返回值需要传递
res = do_work()
print(res)
结果,拿到返回值了
C:\Users\python_hui\Anaconda3\python.exe G:/test/a/1.py
计时开始。。。
do_work开始
do_work结束
计时结束,总共耗时1.00秒
work is done
Process finished with exit code 0