在Python中赋值之前引用的局部变量?

史酷比:

我正在使用PyQt库拍摄网页的屏幕截图,然后读取具有不同URL的CSV文件。我保留了一个变量提要,该提要在每次处理URL时都会增加,因此应该增加到URL的数量。

这是代码:

webpage = QWebPage()
fo = open("C:/Users/Romi/Desktop/result1.txt", "w")
feed = 0
def onLoadFinished(result):
    #fo.write( column1[feed])#, column2[feed], urls[feed])
   #feed = 0
   if not result:
        print "Request failed"
    fo.write(column1[feed])
    fo.write(',')
    fo.write(column2[feed])
    fo.write(',')
    #fo.write(urls[feed])
    fo.write(',')
    fo.write('404,image not created\n')
    feed = feed + 1
        sys.exit(1)
        save_page(webpage, outputs.pop(0))   # pop output name from list and save
   if urls:
        url = urls.pop(0)   # pop next url to fetch from list
        webpage.mainFrame().load(QUrl(url))
    fo.write(column1[feed])#,column2[feed],urls[feed],'200','image created','/n')
    fo.write(',')
    fo.write(column2[feed])
    fo.write(',')
    #fo.write(urls[feed])
    fo.write(',')
    fo.write('200,image created\n')
    feed = feed + 1
   else:
        app.quit()  # exit after last url

webpage.connect(webpage, SIGNAL("loadFinished(bool)"), onLoadFinished)
webpage.mainFrame().load(QUrl(urls.pop(0)))
#fo.close()
sys.exit(app.exec_())

它给了我错误:

local variable feed referenced before the assignment at fo.write(column1[feed])#,column2[feed],urls[feed],'200','image created','/n')

知道为什么吗?

忘记:

当Python解析函数定义的主体并遇到诸如

feed = ...

feed默认情况下,Python解释为局部变量。如果您不希望它成为局部变量,则必须输入

global feed

在函数定义中。全局语句不必位于函数定义的开头,而通常位于该处。无论放置在何处,全局声明都会在函数中的任何位置创建feed一个全局变量

如果没有全局语句,feed则当Python执行时,因为被视为局部变量

feed = feed + 1,

Python首先评估右侧,然后尝试查找feed的值。第一次查找feed未定义。因此,错误。

修补代码的最短方法是将添加global feed到的开头onLoadFinished更好的方法是使用一个类:

class Page(object):
    def __init__(self):
        self.feed = 0
    def onLoadFinished(self, result):
        ...
        self.feed += 1

具有使全局变量发生变异的函数的问题在于,它使操作代码更加困难。功能不再是孤立的单元。它们的交互作用扩展到影响全局变量或受全局变量影响的所有事物。因此,它使大型程序难以理解。

通过避免更改全局变量,从长远来看,您的代码将更易于理解,测试和维护。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

赋值之前引用的局部变量/ Python

来自分类Python

在Python中赋值之前引用的局部变量?

来自分类Dev

Python - UnboundLocalError:在循环中赋值之前引用的局部变量

来自分类Dev

UnBoundLocalError:赋值之前引用的局部变量(Python)

来自分类Dev

在修饰方法中赋值之前引用的局部变量

来自分类Dev

UnboundLocalError:在理解中赋值之前引用的局部变量

来自分类Dev

在 Django 中赋值之前引用的局部变量“params”

来自分类Dev

赋值之前引用的局部变量“ request”

来自分类Dev

赋值之前引用的局部变量“ statement”

来自分类Dev

赋值之前引用的局部变量“ body”

来自分类Dev

赋值之前引用的局部变量“ like”

来自分类Dev

局部变量在赋值之前被引用

来自分类Dev

UnboundLocalError:在python闭包中赋值之前引用的局部变量

来自分类Dev

如何修复 UnboundLocalError:在 Python 中赋值之前引用的局部变量“df”

来自分类Dev

关于UnboundLocalError:在Python中赋值之前引用了局部变量'font_size'

来自分类Dev

修复UnboundLocalError:在python中赋值之前引用的局部变量“名称”

来自分类Dev

“在赋值之前引用了局部变量‘stringData’”python中的错误

来自分类Dev

“在赋值之前引用的局部变量‘变量’”错误背后的原因

来自分类Dev

Python | 如果变量:UnboundLocalError:赋值之前引用了局部变量“变量”

来自分类Dev

UnboundLocalError:赋值之前引用了局部变量“ cars”

来自分类Dev

赋值之前引用的局部变量 django 错误

来自分类Python

UnboundLocalError:赋值之前引用了局部变量“ e”

来自分类Dev

DJANGO-赋值之前引用的局部变量“ form”

来自分类Dev

UnboundLocalError:在赋值之前引用了局部变量 <function>

来自分类Dev

麻烦:UnboundLocalError:赋值之前引用了局部变量

来自分类Dev

赋值之前引用了UnboundLocalError局部变量'context'

来自分类Dev

赋值之前引用的局部变量“ form1”

来自分类Dev

赋值之前引用了局部变量“ n”。关闭

来自分类Dev

赋值之前引用的局部变量“ comment_form”

Related 相关文章

  1. 1

    赋值之前引用的局部变量/ Python

  2. 2

    在Python中赋值之前引用的局部变量?

  3. 3

    Python - UnboundLocalError:在循环中赋值之前引用的局部变量

  4. 4

    UnBoundLocalError:赋值之前引用的局部变量(Python)

  5. 5

    在修饰方法中赋值之前引用的局部变量

  6. 6

    UnboundLocalError:在理解中赋值之前引用的局部变量

  7. 7

    在 Django 中赋值之前引用的局部变量“params”

  8. 8

    赋值之前引用的局部变量“ request”

  9. 9

    赋值之前引用的局部变量“ statement”

  10. 10

    赋值之前引用的局部变量“ body”

  11. 11

    赋值之前引用的局部变量“ like”

  12. 12

    局部变量在赋值之前被引用

  13. 13

    UnboundLocalError:在python闭包中赋值之前引用的局部变量

  14. 14

    如何修复 UnboundLocalError:在 Python 中赋值之前引用的局部变量“df”

  15. 15

    关于UnboundLocalError:在Python中赋值之前引用了局部变量'font_size'

  16. 16

    修复UnboundLocalError:在python中赋值之前引用的局部变量“名称”

  17. 17

    “在赋值之前引用了局部变量‘stringData’”python中的错误

  18. 18

    “在赋值之前引用的局部变量‘变量’”错误背后的原因

  19. 19

    Python | 如果变量:UnboundLocalError:赋值之前引用了局部变量“变量”

  20. 20

    UnboundLocalError:赋值之前引用了局部变量“ cars”

  21. 21

    赋值之前引用的局部变量 django 错误

  22. 22

    UnboundLocalError:赋值之前引用了局部变量“ e”

  23. 23

    DJANGO-赋值之前引用的局部变量“ form”

  24. 24

    UnboundLocalError:在赋值之前引用了局部变量 <function>

  25. 25

    麻烦:UnboundLocalError:赋值之前引用了局部变量

  26. 26

    赋值之前引用了UnboundLocalError局部变量'context'

  27. 27

    赋值之前引用的局部变量“ form1”

  28. 28

    赋值之前引用了局部变量“ n”。关闭

  29. 29

    赋值之前引用的局部变量“ comment_form”

热门标签

归档