<p>您可能想了解Python中的作用域和名称空间:<a href="https://docs.python.org/2/tutorial/classes.html#python-scopes-and-namespaces" rel="nofollow">https://docs.python.org/2/tutorial/classes.html#python-scopes-and-namespaces</a>。你知道吗</p>
<p>在<code>function()</code>中引用<code>myVar</code>。Python首先查看<code>function()</code>的局部范围,然后再查看全局范围。由于在函数中赋值给<code>myVar</code>,解释器决定这是一个局部变量,而不是使用全局变量。但是,如错误消息中所述,在分配给它之前引用<code>myVar</code>。你知道吗</p>
<p>如果未在函数中赋值,则可以使用全局变量而不声明它<code>global</code>:</p>
<pre><code>myVar = 'hello'
def test():
print myVar
test()
#hello
</code></pre>
<p>但如果在函数中赋值给<code>myVar</code>,则将使用局部变量:</p>
<pre><code>myVar = 'hello'
def test():
myVar = 'Goodbye'
print myVar
test()
#Goodbye
print myVar
#hello
</code></pre>
<p>但是,如您所知,如果您在函数中赋值给<code>myVar</code>,但在此之前引用它,您将得到一个错误:</p>
<pre><code>myVar = 'hello'
def test():
print myVar
myVar = 'Goodbye'
test()
#UnboundLocalError: local variable 'myVar' referenced before assignment
</code></pre>
<p>要解决此问题,可以声明<code>myVar</code>全局:</p>
<pre><code>def function():
global myVar
...
</code></pre>
<p>或者将变量传递给函数:</p>
<pre><code>def function(myVar):
...
</code></pre>