“本地变量在赋值之前被引用”,的确没有提及,并且代码已经进行了多次迭代
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“本地变量在赋值之前被引用”,的确没有提及,并且代码已经进行了多次迭代相关的知识,希望对你有一定的参考价值。
希望您能帮助我。
我正在研究Python上的Selenium。我需要对8000个以上的网址执行相同的过程,因此我定义了以下函数:
def obtenerFrecuencia(paradero):
driver = webdriver.Chrome(r'C:\phantomjs-2.1.1-windows\bin\chromedriver.exe') # Optional argument, if not specified will search path.
driver.get(paradero)
sleep(random.uniform(0, 0.3))
id_base = driver.find_elements_by_xpath('//h3[@class="focus"]')
for info in id_base: # id
variableunica = str(info.get_attribute("outerText")
driver.quit()
return variableunica
而且我将8000个URL保存在名为链接的列表中。
[当我继续运行以下代码来存储代码的发现时:
frecuencia = []
for link in links:
temp = obtenerFrecuencia(link)
frecuencia.append(temp)
我收到以下错误:
UnboundLocalError:分配前引用了局部变量'variableunica'
但是,我没有在文档中的任何地方引用局部变量,所以我并不清楚我为什么会遇到这个问题。我一直在阅读其他具有相同问题的问题,但是它们无关紧要,因为到目前为止,尚未提到任何解决方案,甚至与我的问题无关。因此,我认为在此处发布问题会有所帮助。
此外,此错误在不同的代码迭代中显示,最高的是500,最低的是21。因此,代码肯定可以正常工作,但我想可以对其进行改进以获取8000的信息。连续输入网址,避免出现此错误。
所以问题如下:
- 如何避免此错误(如何以这种方式定义变量)?
- 为什么显示它,因为我之前没有定义该局部变量?
请不要拒绝这个问题,如果您需要更多信息,我可以扩展这个问题。
谢谢
如果您的代码未进入信息循环,则在使用前未声明variableunica,然后在赋值之前引用了变量variableunica
def obtenerFrecuencia(paradero):
driver = webdriver.Chrome(r'C:\phantomjs-2.1.1-windows\bin\chromedriver.exe') # Optional argument, if not specified will search path.
driver.get(paradero)
sleep(random.uniform(0, 0.3))
id_base = driver.find_elements_by_xpath('//h3[@class="focus"]')
variableunica=""
for info in id_base: # id
variableunica = str(info.get_attribute("outerText")
driver.quit()
return variableunica
问题出在这里。
id_base = driver.find_elements_by_xpath('//h3[@class="focus"]')
for info in id_base: # id
variableunica = str(info.get_attribute("outerText")
如果id_base
是空列表怎么办?
然后,它永远不会在下一行中循环通过id_base
,并且variableunica
从未分配任何值。然后您尝试将其退回。
解决方案:
添加
variableunica = ""
进入循环之前。
以上是关于“本地变量在赋值之前被引用”,的确没有提及,并且代码已经进行了多次迭代的主要内容,如果未能解决你的问题,请参考以下文章
Python聚类分析作业代写代做人工智能Python作业代写