擅长:python、mysql、java
<p>在这两个函数的后缀1和2中,可以找到本地名称(Python2中的语法略有不同):</p>
<pre><code>In [7]: main1.__code__.co_varnames
Out[7]: ('globe',)
In [8]: main2.__code__.co_varnames
Out[8]: ('globe', 'x')
</code></pre>
<p>所以<code>x</code>有不同的地位。在第二种情况下,局部的<code>x</code>屏蔽了全局的,因此x=x+1导致了错误,因为还没有定义。你知道吗</p>
<p>从<a href="https://docs.python.org/3/reference/executionmodel.html" rel="nofollow">docs</a>:</p>
<blockquote>
<p>If a name is bound in a block, it is a local variable of that block, unless declared as nonlocal or global.(...).If a variable is used in a code block but not defined there, it is a free variable.</p>
</blockquote>