Comme RedBlueThing analogique et dit:
-
dir()
vous donnera la liste de portée des variables:
-
globals()
vous donnera un dictionnaire des variables globales
-
locals()
vous donnera un dictionnaire des variables locales
En utilisant le shell interactif (version 2.6.9) en cours d'exécution dir() après la création de veriables a = 1
et b = 2
- je obtenir
['__builtins__', '__doc__', '__name__', '__package__', 'a', 'b']
l'exécution de la population locale() donne
{'a': 1, 'b': 2, '__builtins__': <module '__builtin__' (built-in)>, '__package__': None, '__name__': '__main__', '__doc__': None}
l'exécution globals() donne
{'a': 1, 'b': 2, '__builtins__': <module '__builtin__' (built-in)>, '__package__': None, '__name__': '__main__', '__doc__': None}
Ces liste de tous les mêmes variables dans ce cas. Je n'ai pas eu dans tous les modules, de sorte que toutes les variables sont disponibles à la fois comme des variables locales et globales. les habitants() et globals() liste les valeurs des variables ainsi que les noms; dir() n'affiche que les noms.
Si je l'importation d'un module et d'exécuter des locals() ou globals() à l'intérieur du module, dir() donne encore qu'un petit nombre de variables; il ajoute __file__
pour les variables énumérées ci-dessus. les habitants() et globals() dans la liste des mêmes variables, mais dans le processus de l'impression du dictionnaire de la valeur pour __builtin__
il répertorie un nombre bien plus grand de variables: fonctions intégrées, les exceptions et les types, tels que les "'type': <type 'type'>
", plutôt que juste une brève <module '__builtin__' (built-in)>
comme indiqué ci-dessus.
Pour en savoir plus sur dir() voirPython 2.7 référence rapide au Nouveau-Mexique Tech ou de la fonction dir() à ibiblio.org.
Pour plus de détails sur la population locale() et globals() voir les sections locales et variables globales à la Plongée En Python et une page sur globals à New Mexico Tech.
[Commentaire: @Kurt: Vous avez donné un lien pour énumérer-ou-liste-tous-les variables-dans-un-programme-de-votre-favori-langue- mais cette réponse a une erreur. Le problème, c'est: type(name)
dans cet exemple renvoie toujours <type 'str'>
. Vous obtenez une liste de variables, qui répond à la question, mais avec les mauvais types énumérés à côté d'eux. Ce n'était pas évident dans votre exemple, car toutes les variables qui est arrivé à être des chaînes de caractères de toute façon; cependant, il est de retour est le type le nom de la place de la variable du type de la variable. Pour résoudre ce problème: au lieu de print type(name)
utilisation print eval('type(' + name + ')')
. Je m'excuse de poster un commentaire dans la section réponse mais je n'ai pas de commentaire privilèges d'affichage, et l'autre question est fermée.]