擅长:python、mysql、java
<p>在函数的作用域内,必须重新分配gJeff和gCharlie,它们将它们创建为新的局部变量。要告诉python您正在使用全局变量,请将函数的顶部改为如下所示。在</p>
<pre><code>def Bob():
global gCharlie
global gJeff
Charlie=gCharlie
</code></pre>
<p>在不告诉python您正在使用全局变量的情况下,它会尝试引用本地gCharlie和gJeff变量,正如它所说的那样,它们在您的函数中还没有被赋值。人们使用它的原因是他们只使用你发布的代码。只有在引用全局变量的函数中不更改它们的值时,才可以引用全局变量而不显式地这样说。在</p>
<p>通常,python按照以下顺序搜索变量名:local scope、它嵌套在其中的任何def、global、build-ins。因为gJeff和gCharlie是函数中的局部变量,它就到此为止了,除非你另有说明。在</p>
<p>如果你想看到这个,试着看看这个</p>
^{pr2}$
<p>这将输出</p>
<pre><code>in main(1): 5
in function: 0
in main(2): 5
</code></pre>
<p>因为在函数中,x被创建为一个新的局部变量。向useX函数添加一个全局x语句会将最后一行改为打印“0”而不是“5”</p>