关于python:UnboundLocalError:赋值前引用的局部变量“xyz”

UnboundLocalError: local variable “xyz” referenced before assignment

更新:回应Wooble的评论,在for之前添加了一个"sector=none",只返回"none"。我认为问题是for循环中的变量没有被返回。

下面是一个运行良好的函数的一部分,直到最近,当我更改了一个看起来不相关的代码部分。

#-->我最近唯一更改的部分是在RETURN语句中添加"stockurl"

现在我得到了unboundlocalerror:在赋值之前引用了本地变量"sector",引用了"return"行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for sec in root.xpath(r'''//a[re:match(@href,"http://biz.yahoo.com/p/[0-9]{1}conameu.html")]''',
                namespaces={'re': 'http://exslt.org/regular-expressions'}):
    sector = sec.text
    #print"Sector:" + sector

for ind in root.xpath(r'''//a[re:match(@href,"http://biz.yahoo.com/ic/[0-9]{1,9}.html")]''',
        namespaces={'re': 'http://exslt.org/regular-expressions'}):
    industry = ind.text
    #print"Industry:" + industry

#index          --> don't populate here
#followers  --> don't populate here

return a, b, c, d, e, f, stockurl, sector, industry
    #--> the only part I had changed recently was adding"stockurl" to the function


让我们看一下错误消息并向后工作:

local variable"sector" referenced before assignment

这意味着你指的是sector,但sector没有被分配或绑定到对象。

sector的唯一分配是在对loop的主体内。因此,很明显,for循环体没有进入。只有当调用root.xpath()返回一个空的iterable对象时,才会发生这种情况。