Python中的嵌套函数


问题内容

像这样的Python代码可以给我们带来什么好处或启示:

class some_class(parent_class):
    def doOp(self, x, y):
        def add(x, y):
            return x + y
        return add(x, y)

我在一个开源项目中发现了这一点,它在嵌套函数内部做了一些有用的事情,但是除了调用它之外,什么也没做。(可以在此处找到实际的代码。)为什么有人会这样编码?在嵌套函数内部而不是外部普通函数中编写代码是否有好处或副作用?


问题答案:

通常,您这样做是为了 关闭

def make_adder(x):
    def add(y):
        return x + y
    return add

plus5 = make_adder(5)
print(plus5(12))  # prints 17

内部函数可以从封闭范围访问变量(在这种情况下,是局部变量x)。如果您不从封闭范围访问任何变量,那么它们实际上只是具有不同范围的普通函数。