le chargement des modules par imp.load_source avec le même nom résultant de la fusion des modules

Je voudrais savoir si les conditions suivantes comportement est normal ou un bug. Je suis en utilisant CPython2.7

Créer un fichier.x.py

def funcA():
    print "funcA of x.py"
def funcB():
    print "funcB of x.py"

Créer un fichier y de la.py

def funcB():
    print "funcB of y.py"

Créer un fichier test.py

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)

Le résultat

['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'funcA', 'funcB']
<module 'fff' from 'x.py'>
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'funcA', 'funcB']
<module 'fff' from 'y.py'>
funcA of x.py
funcB of y.py
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'funcA', 'funcB']

Mon espoir était que la 2ème imp.load_source pour totalement remplacer le module de x.py avec y.py. En fait sys.modules.get('fff') montre <module 'fff' from 'y.py'>, mais le module a été un peu un mélange de x.py et y.py, et le dernier a la priorité.

Est-ce prévu ou un bug?

EDIT: mon code de test avait une faute de frappe. mis à jour le résultat.

OriginalL'auteur Kenji Noguchi | 2013-02-26