我正在尝试在python3中执行以下操作:
i = 1337
def g():
print(i)
i = 42
g()
但是收到以下错误
UnboundLocalError: local variable 'i' referenced before assignment
我想我理解错误信息的含义,但为什么会这样呢?有没有办法绕过这个?
答案 0 :(得分:5)
用两个词 - 当给定的变量名称没有在函数中赋值时,将查找对该变量的引用。使用全局 - 在这种情况下,python将在全局范围内寻找i:
i = 1337
def g():
global i
print i
i = 42
g()
上阅读更多内容
答案 1 :(得分:1)
如果你真的想这样做,你需要让我从全球范围内获得。
def g():
global i
print i
i = 42
但是,通常情况下,更改代码的工作方式会更好,不需要全局变量。根据您的使用方式,这可能就像将i作为参数传入并返回更改后的值一样简单。
答案 2 :(得分:0)
Keeyai建议将i作为参数传递的一个例子:
i = 1337
def g(i):
print(i)
i = 42
g(i)
但是,你从不使用i的新值,所以这样的事情可能会更有意义:
def g (i):
i = 42
return i
i = 1337
print g(i)