2013-06-10 3 views
0

Je dois appeler la fonction de l'application principale de la fonction dans le module importé. Comme, importé a son propre espace de noms, il imprime une erreur de nom: "nom global ... blah, blah .. n'est pas défini."Comment définir l'espace de noms dans un module importé?

main.py:

from imported import importedFunction 

def mainFunction(): 
    print "MainFunction" 

importedFunction() 

imported.py:

def importedFunction(): 
    print "importedFunction" 
    mainFunction() 

Ai-je besoin méthode importlib? S'il vous plaît aidez-moi à réparer.

+0

Veuillez fournir le code d'erreur * réel * que vous obtenez, et la trace de pile si possible. –

Répondre

1

Vous pouvez importer la fonction là-bas, mais il est pas nécessairement la meilleure solution:

imported.py:

def importedFunction(): 
    print "importedFunction" 

    from main import mainFunction 
    mainFunction() 

Vous devez importer de main dans votre fonction, car à moins que vous n'ayez une boucle dans vos importations.

2

Je pense que vous ne comprenez pas ce que sont exactement les espaces de noms.

Par exemple, d'utiliser un espace de noms sur un module importé vous faites ceci:

from imported import importedFunction as func 

Et puis dans le reste de votre code, vous pouvez consulter à la fonction importée simplement comme func.

De plus, dans votre code, vous essayez d'appeler mainFunction d'un module qui ne contient pas mainFunction comme dans votre module, le fait que vous importez importedFunction ne laisse pas les fonctions d'accès dans votre module, car il agit toujours à l'intérieur de son propre module. À moins que vous n'ayez importé mainFunction dans le module importé, vous créez une boucle infinie .... et cela est normalement mal vu. Donc, pour vous répondre "Je dois appeler la fonction principale de l'application à partir de la fonction du module importé". Ce n'est pas possible à moins que vous importez votre module dans le module importé ...

Questions connexes