什么是python闭包好?

时间:2018-03-16 19:27:42

标签: python python-3.x closures

我理解python闭包的技术定义:让它具体化。

def foo(x):
    def bar(y):
        print(x+y)
    return bar

在此示例中,x将与bar绑定。但这些东西实际上有什么用呢?也就是说,在上面的玩具示例中,可以轻松编写

def bar(x,y):
    print(x+y)

我想知道使用闭包的最佳用例,而不是例如为函数添加额外的参数。

1 个答案:

答案 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无法从任何地方引用,因为您不希望用户篡改它。

相关问题