Python:在for循环中赋值之后赋值之前引用的局部变量

时间:2012-07-23 14:53:28

标签: 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 (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

此外,它不打印j变量。我在那里看不到任何错误。 “spl1”在for循环中分配,但看起来解释器只是跳过它。

请指出错误。

3 个答案:

答案 0 :(得分:3)

在Python中,循环不包含单独的范围,因此如果输入循环,spl1变量设置为“全局”。

line1变量可能长度为3个或更少,因此从未输入循环,因此从未赋值变量。

答案 1 :(得分:1)

由于len(line1) <= 3在某些情况下,您的for循环根本未执行,因此未分配spl1

答案 2 :(得分:1)

我猜测line1的长度小于或等于3.(range(0)会像range(-1)一样返回一个空列表,等等。)因此,你的for循环没有任何迭代,因此它不执行该代码块。