Python全局变量给出了NameError

时间:2017-02-01 11:42:08

标签: python

我的代码:

def draw_lines(img, lines, color, thickness) :
    x_right = []
    y_right = []
    x_left = []
    y_left = []
    numItr = 1

    for line in lines :
        for x1,y1,x2,y2 in lines :
        global numItr
        numItr += 1

这是错误:

NameError: name 'numItr' is not defined    

2 个答案:

答案 0 :(得分:1)

此处无需使用globalnonlocal,只需:

def draw_lines(img, lines, color, thickness) :
    x_right = []
    y_right = []
    x_left = []
    y_left = []
    numItr = 1

    for line in lines :
        for x1,y1,x2,y2 in lines :
            numItr += 1

如果要写入模块级变量,则只需要global。 如果你想写一个词法封闭函数的局部变量,你只需要nonlocal,例如用于定义函数的函数。

这两种情况都不适用于你的代码,你只是呆在一个函数中。

在您的情况下,口译员会抱怨,而使用单词global则表示存在名为numItr的模块级变量,但没有。{/ p>

答案 1 :(得分:0)

也许您的问题是numItr未在draw_lines函数之前声明。看看这个https://stackoverflow.com/a/423596/6876911