擅长:python、mysql、java
<p>好吧,您没有指定<code>dynamic_cls_ex.py</code>中的内容,但是我假设它有一些实际运行的顶级代码(我想这就是您所说的<code>main</code>函数)。在</p>
<p>每当它的封闭python文件本身在解释器的顶层运行时,或者当它被导入时(使用<a href="https://docs.python.org/2/library/functions.html#__import__" rel="nofollow noreferrer">^{<cd3>}</a>您显式地绕过了不重新加载已经存在的模块的检查)时,就会运行该代码。在</p>
<p>但是您可以通过检查<a href="https://docs.python.org/2/library/__main__.html" rel="nofollow noreferrer">^{<cd4>}</a>“这个模块代表解释器主程序执行的(否则是匿名的)作用域”来强制代码只在顶层运行时运行。因此,如果您将顶层代码包装在<code>if __name__ == "__main__":</code>中,它将只从主程序运行,而不会在导入时运行。在</p>
<p>另请参见<a href="https://stackoverflow.com/questions/419163/what-does-if-name-main-do">What does ^{<cd5>} do?</a>这里的SO。在</p>