【问题标题】:How do I access outer functions variables inside a closure(python 2.6)?如何访问闭包内的外部函数变量(python 2.6)?
【发布时间】:2011-04-11 04:17:09
【问题描述】:

来自wikipedia

我需要以与使用 python 3.x 中的“nonlocal”关键字类似的方式访问外部函数变量。在 python 2.6 中有什么方法可以做到这一点吗? (不一定使用 nonlocal 关键字)

【问题讨论】:

标签: python django python-3.x python-2.6 python-nonlocal


【解决方案1】:

在这种情况下,我总是使用辅助对象:

def outerFunction():
    class Helper:
        val = None
    helper = Helper()

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

当您启动一个应该将值写入外部函数范围的新线程时,这也很方便。在这种情况下,helper 将作为参数传递给innerFunction(线程的函数)。

【讨论】:

  • Helper类没有提供任何init,所以当我构造Helper实例(helper = Helper())时,会发生什么? Helper() 是否只返回一个具有一个类属性的实例?
  • @Alcott:是的,类属性默认为None,然后您将其更改为helper.val = ... 的实例属性。我认为这是解决这个问题的最简单的定义。
猜你喜欢
  • 2012-08-18
  • 1970-01-01
  • 2017-06-01
  • 2013-04-24
  • 2012-08-31
  • 2021-09-08
  • 2020-10-30
  • 1970-01-01
  • 2020-03-03
相关资源
最近更新 更多