2010-05-29 6 views
3

J'apprends encore python et après avoir joué avec pygame, j'ai remarqué que je réimportais des choses dans les modules que j'importais et que j'avais déjà importés.Rappelant l'importation dans le module

import pygame 

Par exemple, j'ai quelques classes dans un fichier séparé, mais je dois également importer pygame dans ce fichier trop pour eux de travailler. Est-ce qu'il importe réellement le code deux fois? Est-ce que ça va ralentir mon programme? Ou est-ce que l'importation provient du cache, mais si c'est le cas, pourquoi devrais-je l'importer de nouveau?

Y at-il quelque chose comme (charger) dans Lisp qui tire juste dans le code comme il fait partie du fichier principal?

Merci Vous

Répondre

0

Got it!
Ok, j'ai trouvé ce que je cherchais. Je l'ai juste trouvé maladroit pour devoir ré-importer le code que j'ai déjà importé, particulièrement quand le dossier n'est pas une bibliothèque ou quelque chose, juste scindez le code. trouvé ici: http://norvig.com/python-lisp.html

execfile("file.py") 

répond parfaitement à mon problème. Il analyse un fichier et y exécute le code. En l'utilisant, j'ai pu supprimer les instructions d'importation supplémentaires et cela fonctionne parfaitement: D

+0

'execfile()' exécute aussi * le code, contrairement à une deuxième importation. –

2

Les importations ultérieures tirer la référence du module en cache de sys.modules. Vous devez importer pour ajouter le module à l'espace de noms/portée actuel.

2

Lorsque Python importe un module, il vérifie d'abord le registre du module (sys.modules) pour voir si le module est déjà importé. Si tel est le cas, Python utilise l'objet module existant tel quel.