title: Namespace of circular import
body: <p>When the shell  <code>import</code> module <strong>one</strong>, I thought the <strong>one</strong> will import  <strong>two</strong> and run the code of <strong>two</strong> so it will import <strong>three</strong> automatically. Thus, three names of the modules will all include in the <code>dir()</code>. </p>
  
  <p>Actually, when I check the namespace, theres only module <strong>one</strong> (see below). </p>
  
  <p>How it can print the <code>'Hello'</code>without including the namespace of module <strong>two</strong> and <strong>three</strong>? Since the <code>one.f1()</code> relies on both modules.</p>
  
  <pre><code>&gt;&gt;&gt; ================================ RESTART ================================
  &gt;&gt;&gt; import one
  in three
  In two
  in one
  &gt;&gt;&gt; dir()
  ['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'one']
  &gt;&gt;&gt; one.f1()
  Hello
  &gt;&gt;&gt; 
  </code></pre>
  
  <hr>
  
  <pre><code>'one.py'
  import two
  print('in one')
  
  def f1():
      two.f2()
  
  def f4():
      print ('Hello')
  </code></pre>
  
  <hr>
  
  <pre><code>'two.py'
  import three
  print ('In two')
  
  def f2():
      three.f3()
  </code></pre>
  
  <hr>
  
  <pre><code>'three.py'
  import one
  print('in three')
  def f3():
      one.f4()
  </code></pre>