在不修改原函数定义的情况下,有想对原函数的功能进行加强,在python中可以通过装饰器语法🍬对原函数功能进行增强。以下通过两个案例来说明其用法。
1 . 利用装饰器实现对函数运行时间的统计
import time
def time_it(fun):
def wrapper(*args,**kwargs):
start = time.time()
result = fun(*args,**kwargs)
end = time.time()
print(f'{fun.__name__} excute cost {end-start}')
return result
return wrapper
使用方法:
@time_it
def add(a,b):
return a + b
- 实现一个带参数的装饰器
def get_wrapper_params(*k, **a):
def outer_wrapper(fun):
print(f'*k={k}')
print(f'**a={a}')
def inner_wrapper(*args, **kwargs):
res = fun(*args, **kwargs)
return res
return inner_wrapper
return outer_wrapper
使用方法:
@get_wrapper_params(1, 2, operate='+')
def sum_(a, b):
return a + b