擅长:python、mysql、java
<p>我认为您正在努力解决python处理<code>namespaces</code>的方式。当您键入<code>from module import thing</code>时,您将把<code>thing</code>从<code>module</code>带到当前命名空间中。因此,在您的示例中,当<code>mod1</code>被导入时,将按以下顺序计算代码:</p>
<pre><code>from mod2 import test #Import mod2, bring test function into current module namespace
test("mod1.py") #run the test function (defined in mod2)
</code></pre>
<p>现在对于mod2:</p>
^{pr2}$
<p>所有这些之所以重要,是因为python允许您准确地选择要放入名称空间的内容。例如,假设您有一个<code>module1</code>,它定义函数<code>cool_func</code>。现在您正在编写另一个模块(<code>module2</code>),它使得<code>module2</code>也有一个函数<code>cool_func</code>。Python允许您将它们分开。在<code>module3</code>中,您可以:</p>
<pre><code>import module1
import module2
module1.cool_func()
module2.cool_func()
</code></pre>
<p>或者,你可以:</p>
<pre><code>from module1 import cool_func
import module2
cool_func() #module1
module2.cool_func()
</code></pre>
<p>或者你可以:</p>
<pre><code>from module1 import cool_func as cool
from module2 import cool_func as cooler
cool() #module1
cooler() #module2
</code></pre>
<p>可能性还在继续。。。在</p>
<p>希望我的观点是清楚的。从模块导入对象时,您正在选择如何在当前命名空间中引用该对象。在</p>