擅长:python、mysql、java
<p>在“编译”期间,python几乎只检查语法。由于<code>awersdfvsdvdcvd</code><em>是一个有效的标识符,因此在该行实际执行之前不会引发错误。仅仅因为你使用了一个没有定义的名字并不意味着它不能在其他地方被定义。。。e、 g.:</p>
<pre><code>globals()['awersdfvsdvdcvd'] = 1
</code></pre>
<p>在文件的前面就足以抑制<code>NameError</code>,如果执行名称拼写错误的行,则会出现这种情况。在</p>
<p>好吧,那么python不能也只查找全局语句吗?答案又是“no”来自模块“foo”,我可以用类似的方式添加到模块“bar”的全局变量中。而且python在实际运行之前无法知道哪些模块将被导入(我也可以在运行时动态导入模块)。在</p>
<hr/>
<p>请注意,我所提到的Python作为一种语言不能对这些事情发出警告的大多数原因都涉及到人们做了一些疯狂的混乱的事情。有很多工具会警告你这些事情(假设你不会做那样的蠢事)。我最喜欢的是<a href="https://www.pylint.org/" rel="nofollow">^{<cd3>}</a>,但是任何python linter都应该能够警告您未定义的变量。如果在编辑器上挂起一个小钩子,大多数情况下,在实际运行代码之前就可以捕捉到这些bug。在</p>