Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:在for循环中,在赋值之后的赋值之前引用的局部变量_Python - Fatal编程技术网

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

我知道这是一个常见的问题,但我找不到解决我的问题的办法。我在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
回溯(最近一次呼叫最后一次):
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
?它的值将在每次迭代中被覆盖。