【发布时间】:2012-04-28 22:35:53
【问题描述】:
我在另一个函数foo() 中嵌套了一个函数定义bar()。现在我正在尝试从嵌套函数bar() 访问位于外部函数foo() 中的变量。但是,由于范围规则,这不起作用(请参阅下面的错误回溯)。
我正在寻找类似于 global 关键字的东西,但它只能让我访问 global 变量,而这是某种 semi-global 变量.
下面是示例代码:
def foo():
i = 0
def bar():
# how can I get access to the variable from enclosing scope?
i += 1
bar()
foo()
输出是:
$ python test.py
Traceback (most recent call last):
File "test.py", line 7, in <module>
foo()
File "test.py", line 5, in foo
bar()
File "test.py", line 4, in bar
i += 1
UnboundLocalError: local variable 'i' referenced before assignment
【问题讨论】:
-
你想达到什么目的?
-
请说明这样做的原因。这将帮助我们提供更好的解决方案