题目
装饰器实现一个函数计时器
1.被装饰的函数有返回值怎么办
2.如何保留被装饰函数的函数名和帮助信息文档
编程
import time
import random
import string
import functools
li = [random.choice(string.ascii_letters) for i in range(100)]
def timeit(func):
@functools.wraps(func)
def wrapper(*args, **kwargs): # 接收可变参数 和关键字参数
"""这是一个装饰器timeit"""
# 在函数运行只前
start_time = time.time()
# 执行函数
res = func(*args, **kwargs)
# 在函数运行之后
end_time = time.time()
print('运行时间为:%.6f' % (end_time - start_time))
return res
return wrapper
@timeit
def con_add():
s = ''
for i in li:
s += (i + ',')
print(s)
@timeit
def join_add():
print(','.join(li))
#
# con_add()
# join_add()
# @timeit
def fun_list(n):
"""这是fun_list函数"""
return [2 * i for i in range(n)]
@timeit
def fun_map(n):
"""这是fun_map函数"""
return list(map(lambda x:x*2,range(n)))
# fun_list(100000)
# fun_map(100000)
print(fun_map.__doc__)
print(fun_list.__doc__)
print(fun_map.__name__)
print(fun_list.__name__)
结果
来源:CSDN
作者:一坨小红花
链接:https://blog.csdn.net/qq_45652989/article/details/103951590