擅长:python、mysql、java
<blockquote>
<p>Is my understanding wrong?</p>
</blockquote>
<p>是的,因为行<code>from file_a import A</code>只将类<code>A</code>导入到<code>file_b</code>的命名空间中。<code>file_a</code>的名称空间是单独的。如果不是这样的话,两种语法都没有什么意义:</p>
<pre><code>import modulename
from modulename import something
</code></pre>
<p>如果你的想法是正确的,那么在第二个表单之后,你总是可以使用<code>modulename.someotherthing</code>。</p>
<blockquote>
<p>If yes, then is there a way to have common imports and global variables across files?</p>
</blockquote>
<p>是的,使用星号<code>*</code>运算符:</p>
<pre><code>from modulename import *
</code></pre>
<p>但是这带来了名称空间污染的问题,例如<code>from file_a import *</code>将在<code>file_b</code>中导入,也会在<code>file_a</code>中导入所有的导入。你最终会失去对进口的控制,这会在某个时候咬你一口。。。相信我!</p>
<p>当出于某种原因需要<code>from module import *</code>时,命名空间污染的解决方法是在<code>module</code>中定义<a href="http://docs.python.org/tutorial/modules.html#importing-from-a-package">variable ^{<cd12>}</a>,其中列出了应该使用star运算符导入的内容。</p>
<p>啊!</p>