如何在闭包函数中访问外部函数的变量(Python 2.6)?

4

来自 维基百科

我需要以类似于Python 3.x中使用“nonlocal”关键字的方式访问外部函数变量。在Python 2.6中是否有某种方法可以实现这一点?(不一定要使用nonlocal关键字)

1个回答

5
我通常会在这种情况下使用辅助对象:
def outerFunction():
    class Helper:
        val = None
    helper = Helper()

    def innerFunction():
        helper.val = "some value"

当您启动一个新线程并希望将值写入外部函数作用域时,这也非常有用。在这种情况下,helper 将作为参数传递给 innerFunction(线程的函数)。


Helper类没有提供任何__init__方法,所以当我构造Helper实例(helper = Helper())时,会发生什么?Helper()只是返回一个带有一个类属性的实例吗? - Alcott
@Alcott:是的,类属性默认为None,然后您可以通过helper.val = ...将其更改为实例属性。我认为这是解决此问题最简单的定义。 - AndiDog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接