擅长:python、mysql、java
<p>当Python解析函数定义的主体并遇到如下赋值时</p>
<pre><code>feed = ...
</code></pre>
<p>默认情况下,Python将<code>feed</code>解释为局部变量。如果不希望它成为局部变量,则必须将</p>
<pre><code>global feed
</code></pre>
<p>在函数定义中。global语句不必位于函数定义的开头,但它通常位于该位置。无论放置在何处,全局声明都会使<code>feed</code>成为函数中处处<em>的全局变量</p>
<p>没有全局语句,因为在Python执行时<code>feed</code>被视为局部变量</p>
<pre><code>feed = feed + 1,
</code></pre>
<p>Python首先计算右侧,然后尝试查找提要的值。第一次通过它发现<code>feed</code>是未定义的。因此出现了错误</p>
<p>修补代码的最短方法是将<code>global feed</code>添加到<code>onLoadFinished</code>的开头。更好的方法是使用类:</p>
<pre><code>class Page(object):
def __init__(self):
self.feed = 0
def onLoadFinished(self, result):
...
self.feed += 1
</code></pre>
<p>使用变异全局变量的函数的问题在于,它使代码更难修改。功能不再是孤立的单元。它们的交互作用延伸到影响全局变量或受全局变量影响的所有事物。因此,它使得更大的程序更难理解</p>
<p>通过避免全局变量的变异,从长远来看,您的代码将更易于理解、测试和维护</p>