擅长:python、mysql、java
<p>这两个示例在功能上是相同的,但是您应该在第二个示例中使用变量的“global”定义,因为您修改了全局变量success,并且没有全局的,将创建变量的本地副本(参见<a href="https://stackoverflow.com/questions/423379/using-global-variables-in-a-function-other-than-the-one-that-created-them">this</a>或<a href="http://docs.python.org/2/reference/simple_stmts.html#the-global-statement" rel="nofollow noreferrer">python global documentation</a>)。在</p>
<pre><code>def do_POST(self):
...
global success, fails, statsLock
statsLock.acquire()
success += 1 # THIS DOES NOT WORK WITHOUT GLOBAL
statsLock.release()
return
</code></pre>
<p>总之,我认为:</p>
<ul>
<li>由于简化了变量查找(应该有人对此进行基准测试!),类范围内的变量将稍快一些。在</li>
<li>由于“全球”声明和污染全球范围,全球变量更难维持。在</li>
</ul>