python函数修饰器
from functools import lru_cache
@lru_cache(maxsize=None) # 加在函数定义前
def lcm(a, b):
return (a * b) // math.gcd(a, b)
简单的缓存
import time
def timer(func):
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
print("%s took %.2fs" % (func.__name__, time.time() - start))
return result
return wrapper
@timer
def main():
print(1)
简单的计时器(注意:若有阻塞输入,阻塞的时间也会被计算在内)
修饰器本质上就是个高阶函数,以被修饰函数作为输入,无入侵的完成一些辅助操作