擅长:python、mysql、java
<p>冒着再次被否决的风险,以下是对这些“先定义后使用”要求的进一步深入了解。在</p>
<p>请注意,在函数被调用之前,不会处理函数体中是否存在符号。所以你可以这样写代码:</p>
<pre><code>def A():
# calls B - even though B is defined later in the module
B()
def B():
# calls A
A()
</code></pre>
<p>这个很好用。解释器/编译器通过模块自上而下工作,但是当它看到函数或类定义时,它处理函数的定义,而不是函数本身。在</p>
<p>代码失败的原因是对<code>isVowel</code>的引用不在函数内,而是在模块范围内。模块中不在函数中的代码会立即执行,因此解释器需要能够根据到目前为止看到的内容来解析任何名称。在</p>