title: loading modules by imp.load_source with same name resulting merger of the modules
body: <p>I would like to know if the following behavior is expected or a bug.  I'm using CPython2.7</p>
  
  <p>Create a file x.py</p>
  
  <pre><code>def funcA():
      print "funcA of x.py"
  def funcB():
      print "funcB of x.py"
  </code></pre>
  
  <p>Create a file y.py</p>
  
  <pre><code>def funcB():
      print "funcB of y.py"
  </code></pre>
  
  <p>Create a file test.py</p>
  
  <pre><code>import sys, imp
  # load x.py as fff
  m = imp.load_source('fff', 'x.py')
  print dir(m)
  print sys.modules.get('fff')
  # load y.py as fff
  m = imp.load_source('fff', 'y.py')
  print dir(m)    
  print sys.modules.get('fff')
  
  # import and exec func
  import fff
  fff.funcA()
  fff.funcB()
  print dir(fff)
  </code></pre>
  
  <p>The result</p>
  
  <pre><code>['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'funcA', 'funcB']
  &lt;module 'fff' from 'x.py'&gt;
  ['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'funcA', 'funcB']
  &lt;module 'fff' from 'y.py'&gt;
  funcA of x.py
  funcB of y.py
  ['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'funcA', 'funcB']
  </code></pre>
  
  <p>My expectation was that the 2nd <code>imp.load_source</code> would completely replace the module x.py with y.py.  In fact <code>sys.modules.get('fff')</code> shows <code>&lt;module 'fff' from 'y.py'&gt;</code> but the resulting module was like a mix of x.py and y.py, and the latter has the precedence.</p>
  
  <p>Is this expected or a bug?</p>
  
  <p>EDIT: my test code had a typo. updated the result.</p>