Python:在for循环中,在赋值之后的赋值之前引用的局部变量
我知道这是一个常见的问题,但我找不到解决我的问题的办法。我在Python中执行for循环时遇到了一个问题。当我用这个片段运行程序时Python:在for循环中,在赋值之后的赋值之前引用的局部变量,python,Python,我知道这是一个常见的问题,但我找不到解决我的问题的办法。我在Python中执行for循环时遇到了一个问题。当我用这个片段运行程序时 for j in range(len(line1)- 3): print 'j =', j spl1 = spline(line1[j], line1[j + 1], line1[j + 2], line1[j + 3], t, Nu) print 'spl1 =' matrix.show(spl1) 我得到一个输出: Traceback (mo
for j in range(len(line1)- 3):
print 'j =', j
spl1 = spline(line1[j], line1[j + 1], line1[j + 2], line1[j + 3], t, Nu)
print 'spl1 ='
matrix.show(spl1)
我得到一个输出:
Traceback (most recent call last):
File "D:\work\curvature\test\twisted\cardinal_spline.py", line 272, in <module> main()
File "D:\work\curvature\test\twisted\cardinal_spline.py", line 111, in main
matrix.show(spl1)
UnboundLocalError: local variable 'spl1' referenced before assignment
回溯(最近一次呼叫最后一次):
main()中第272行的文件“D:\work\curvature\test\twisted\cardinal\u spline.py”
文件“D:\work\curvature\test\twisted\cardinal\u spline.py”,第111行,主目录
矩阵显示(spl1)
UnboundLocalError:赋值前引用了局部变量“spl1”
此外,它不打印j变量。我看不出有什么错误。“spl1”被分配到for循环中,但看起来解释器只是跳过了它
请指出错误。由于
len(line1)您的for循环根本没有执行,因为在Python中len(line1)您的for循环根本没有执行,循环不具有单独的作用域,因此如果输入循环,spl1
变量将被设置为“全局”
line1变量的长度可能为3个或更少的字符,因此从未输入循环,因此从未分配变量。在Python中,循环不具有单独的作用域,因此如果输入循环,则将spl1
变量设置为“全局”
line1变量的长度可能为3个或更少的字符,因此从未输入循环,因此从未分配变量。我猜line1
的长度小于或等于3。(range(0)
和range(-1)
等一样返回一个空列表)因此,for循环没有任何可迭代的内容,因此它不会执行该代码块。我猜行1
的长度小于或等于3。(range(0)
返回一个空列表,正如range(-1)
等)因此,for循环没有任何可迭代的内容,因此它不会执行该代码块。为什么要在循环中更新变量spl1
?它的值将在每次迭代中被覆盖。为什么要在循环中更新变量spl1
?它的值将在每次迭代中被覆盖。