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

时间:2012-05-12 23:03:14

标签: python local-variables

更新:为了回应Wooble的评论,在for之前添加“sector = None”只会返回“None”。我认为问题是for循环中的变量没有返回。

以下是一个运行良好的函数的一部分,直到最近,当我更改了代码中看似无关的部分时。

# - >我最近改变的唯一部分是在返回声明中添加“stockurl”

我现在得到 UnboundLocalError:在分配前引用的局部变量“sector”,引用“return”行

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

1 个答案:

答案 0 :(得分:5)

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

  分配前引用的

局部变量“sector”

这意味着您指的是sector,但sector尚未分配或绑定到对象。

sector的唯一作业位于for loop的正文中。所以,很明显,没有输入for循环的主体。只有当root.xpath()的调用返回一个空的可迭代对象时,才会发生这种情况。