我试图做大意如下的python3东西:Python的嵌套函数变量赋值
i = 1337
def g():
print(i)
i = 42
g()
但出现以下错误
UnboundLocalError: local variable 'i' referenced before assignment
我想我明白了错误信息的手段,但为什么会这样呢?有什么办法可以绕过这个吗?
我试图做大意如下的python3东西:Python的嵌套函数变量赋值
i = 1337
def g():
print(i)
i = 42
g()
但出现以下错误
UnboundLocalError: local variable 'i' referenced before assignment
我想我明白了错误信息的手段,但为什么会这样呢?有什么办法可以绕过这个吗?
用两个词 - 给定的变量名未在函数中赋值时,将查找对该变量的引用。使用全局 - 在这种情况下,蟒蛇会寻找我在全球范围内:
i = 1337
def g():
global i
print i
i = 42
g()
你可以阅读更多的variable scopes in PEP-0227
如果你真的想这样做的,你需要让我脱离全球范围。
def g():
global i
print i
i = 42
但是,通常你会更好地改变你的代码如何工作而不需要全局变量。根据你如何使用它,这可能就像传入i作为参数一样简单,并返回更改后的值。
在我作为参数传递的Keeyai的建议的一个例子:
i = 1337
def g(i):
print(i)
i = 42
g(i)
但是,你千万不要用我的新的价值,所以也许这样的事情更有意义:
def g (i):
i = 42
return i
i = 1337
print g(i)
请参阅http://stackoverflow.com/q/370357/875127 – 2013-04-09 03:42:32