我理解python闭包的技术定义:让它具体化。
def foo(x):
def bar(y):
print(x+y)
return bar
在此示例中,x
将与bar
绑定。但这些东西实际上有什么用呢?也就是说,在上面的玩具示例中,可以轻松编写
def bar(x,y):
print(x+y)
我想知道使用闭包的最佳用例,而不是例如为函数添加额外的参数。
答案 0 :(得分:5)
我认为最常用的闭包示例是使用装饰器缓存函数。
def cache_decorator(f):
cache = {}
def wrapper(*args):
if args not in cache:
cache[args] = f(*args)
return cache[args]
return wrapper
@cache_decorator
def some_function(*args):
...
这样,cache
无法从任何地方引用,因为您不希望用户篡改它。