nonlocal 可以将一个变量声明为非本地变量, 在python的lru_cache看到了使用
def decorator(func):
a = 1
def wrapper(*args, **kwargs...):
nonlocal a
a += 1
return func()
return wrapper
实例中, 当a变量是不可变类型时, 因为包装函数引用了a, 装饰器执行结束, 在包装函数里改变a的值,...需要用nonlocal声明a变量....misses # 要改变misses,所以用nonlocal声明
misses += 1
result = user_function(*args, **kwds)
return result
elif...maxsize is None:
def wrapper(*args, **kwds):
# Simple caching without ordering or size limit
nonlocal