moo*_*eep 0 python closures scope
我bar()
在另一个函数中嵌套了一个函数定义foo()
.现在我试图foo()
从嵌套函数访问位于外部函数中的变量bar()
.但是,由于范围规则,这不起作用(请参阅下面的错误追溯).
我正在寻找类似于global
关键字的东西,但这只能让我访问全局变量,而这是某种半全局变量.
这是示例代码:
def foo():
i = 0
def bar():
# how can I get access to the variable from enclosing scope?
i += 1
bar()
foo()
Run Code Online (Sandbox Code Playgroud)
输出是:
$ 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
Run Code Online (Sandbox Code Playgroud)
你需要nonlocal
声明而不是global
.
i
显然不是全球性的,但它也不是本地的foo
.这是当地的__init__
.因此,为了访问它,声明它nonlocal
.
不幸的是,nonlocal
只有ist python3.你可以通过闭包来模拟它,但这会非常难看.
归档时间: |
|
查看次数: |
590 次 |
最近记录: |