python:如何捕获在非全局祖先外部范围内声明的变量?

鉴于:

def f():
    x = 0
    def g():
        h()
    def h():
        x += 1
        print(x)
    g()

>>> f()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 8, in f
  File "<stdin>", line 4, in g
  File "<stdin>", line 6, in h
UnboundLocalError: local variable 'x' referenced before assignment
>>>

我如何使h看到x变量?

谢谢.

编辑

应该早些提及,我使用的是Python 2.7.3

最佳答案
你可以制作一个function attribute

def f():
    f.x = 0
    def g():
        h()
    def h():
        f.x += 1
        print(f.x)
    g()

另外,从Python 3开始,可以使用nonlocal关键字.

转载注明原文:python:如何捕获在非全局祖先外部范围内声明的变量? - 代码日志