遇到以下问题。这可能是一个简单的解决方案,之前可能已经在这里问过,但我找不到它。
def a():
liA = []
def b():
for i in liA:
i += 1
liB = generateList()
for i in liB:
i -= 1
liA = liB
def generateList():
return [1,2,3,4]
b()
a()
UnboundLocalError:在赋值之前引用的局部变量'liA'
答案 0 :(得分:4)
liA
变量永远不会被初始化。
因此,您应该按照以下方式编辑代码:
b()
希望我帮助过你!
答案 1 :(得分:1)
如果您查看整个堆栈跟踪,您可以更好地了解错误的发生方式。
Traceback (most recent call last):
File "/Users/jwp/Desktop/junk.py3", line 16, in <module>
a()
File "/Users/jwp/Desktop/junk.py3", line 14, in a
b()
File "/Users/jwp/Desktop/junk.py3", line 4, in b
for i in liA:
UnboundLocalError: local variable 'liA' referenced before assignment
因此,当您致电b()
而未在liA
的上下文中声明b()
,然后在作业liA = liB
中使用它时,会引发错误。< / p>
最明显的答案是将liA
作为参数传递给b()
。像这样:
def a():
liA = []
def b(inlist):
liA = inlist
for i in liA:
i += 1
liB = generateList()
for i in liB:
i -= 1
liA = liB
def generateList():
return [1,2,3,4]
b(liA)
a()
这是否符合您的需求?