遇事不要慌~
各种各样的项目源码,都有使用@,这就是装饰器的语法,写下最简单的装饰器用法;
如果我们想知道一个函数的执行时间,怎么办呢
import time
'''
装饰器demo
'''
st = time.time()
def inner_func():
print(f'I am inner function')
time.sleep(2)
end = time.time()
print(f'{inner_func.__name__}执行时间是{end - st}')
inner_func执行时间是1.1920928955078125e-06
如果每个函数都想知道时间呢,,那每个都写个time.time(),😄
简单点的话我们可以写个装饰器,装饰器的特殊之处为输出为函数,只不过这个函数,在原输入函数的基础上,加了一些功能:
def runtime(func):
def wrap():
st = time.time()
func()
end = time.time()
print(f'{func.__name__}执行时间是{end - st}s')
return wrap
这里将输入的func,包裹了一层执行时间功能,返回是包裹后的函数wrap
这里我们执行一下:
def inner_func():
print(f'I am inner function')
time.sleep(2)
def runtime(func):
def wrap():
st = time.time()
func()
end = time.time()
print(f'{func.__name__}执行时间是{end - st}s')
return wrap
warp = runtime(inner_func)
warp()
I am inner function
inner_func执行时间是2.0001890659332275s
再简洁一点,就是我们的装饰器,在函数上加上@runtime即可
'''
装饰器demo
'''
def runtime(func):
def wrap():
st = time.time()
func()
end = time.time()
print(f'{func.__name__}执行时间是{end - st}s')
return wrap
@runtime
def inner_func():
print(f'I am inner function')
time.sleep(2)
inner_func()
result:
I am inner function
inner_func执行时间是2.002408981323242s
很简单的demo,有问题大家可以私信评论交流!
最后,欢迎一键三连😄
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)