当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
具有使全局变量发生变异的函数的问题在于,使代码更难处理。功能不再是孤立的单元。它们的交互作用扩展到影响全局变量或受全局变量影响的所有事物。因此,它使大型程序更难以理解。
通过避免更改全局变量,从长远来看,您的代码将更易于理解,测试和维护。



