2009-06-13 5 views

Répondre

103

Il suffit d'utiliser() GLOBALS

globals() - Retourne un dictionnaire représentant le symbole mondial actuel tableau . C'est toujours le dictionnaire du module courant (à l'intérieur d'une fonction ou d'une méthode , il s'agit du module où il est défini, pas le module à partir duquel il est appelé).

http://docs.python.org/library/functions.html#globals

+3

Y at-il un moyen d'accéder aux gloabals() du module appelant, au lieu du module définissant? – dimo414

+5

Vous pouvez essayer d'obtenir les globals de l'appelant à partir du module de traceback (http://docs.python.org/library/traceback.html), mais cela est en train d'entrer dans le domaine de la magie noire. Je ne sais pas ce que vous essayez de faire, mais vous voudrez peut-être repenser votre conception si vous en avez besoin. –

10

Consultez également le module inspect intégré. Cela peut être très pratique.

+1

Un exemple d'utilisation pertinent est attendu. Le lien pourrait pourrir ne laissant rien de valeur ici. – IAbstract

121

Comme mentionné précédemment, globals vous donne un dictionnaire par opposition à dir() qui vous donne une liste des noms définis dans le module. La façon dont je vois généralement cela fait est comme suit:

import sys 
dir(sys.modules[__name__]) 
+1

J'allais ajouter un commentaire que cela ne fonctionnerait pas pour le module '__main__' (qui est ce que le module exécuté au terminal est appelé) parce que cela ne semble pas être listé dans sys.modules - mais il le fait travail :) – markm

+0

Cependant, il ne semble pas fonctionner à partir de ipdb (insérer "ipdb d'importation; ipdb.set_trace()" dans votre fichier). – gatoatigrado

+9

Excellent! Cela m'a juste permis d'utiliser la docstring du module en cours comme message d'utilisation - 'sys.modules [__ name __] .__ doc__'. – george

Questions connexes