擅长:python、mysql、java
<p>这种做法使用的是在范围之外定义的“阴影名称”,通常是<a href="https://stackoverflow.com/questions/20125172/how-bad-is-shadowing-names-defined-in-outer-scopes">this is a very bad practice</a>。许多ide和代码检查工具都会在这里报告错误或警告。在</p>
<p>实际上,许多动态类型化语言都允许这种行为。在我看来,这是因为,在编写函数时,我们希望能够按照我们喜欢的任何顺序来编写函数。对于像C这样将声明和定义分开的语言,我们可以确保在定义部分声明所有内容。在</p>
<p>但是,对于python,它没有声明名称的类型,情况就不同了。如果我们不允许来自外部范围的名称,我们突然之间就不能有相互递归和许多编程结构!在</p>