Como RedBlueThing y analógico dijo:
dir()
da una lista de las variables de ámbito
globals()
da un diccionario de variables globales
locals()
da un diccionario de variables locales
Uso del shell interactivo (versión 2.6.9), después de crear las variables a = 1
y b = 2
, corriendo dir()
da
['__builtins__', '__doc__', '__name__', '__package__', 'a', 'b']
corriendo locals()
da
{'a': 1, 'b': 2, '__builtins__': <module '__builtin__' (built-in)>, '__package__': None, '__name__': '__main__', '__doc__': None}
Correr globals()
da exactamente la misma respuesta que locals()
en este caso.
No he entrado en ningún módulo, por lo que todas las variables están disponibles como variables locales y globales.locals()
y globals()
enumeran los valores de las variables así como los nombres; dir()
solo enumera los nombres.
Si importo un módulo y ejecuto locals()
o globals()
dentro del módulo, dir()
todavía proporciona solo un pequeño número de variables; Agrega __file__
a las variables enumeradas anteriormente. locals()
y globals()
también enumeran las mismas variables, pero en el proceso de imprimir el valor de diccionario para __builtin__
, enumera un número mucho mayor de variables: funciones incorporadas, excepciones y tipos como "'type': <type 'type'>
", en lugar de simplemente el breve <module '__builtin__' (built-in)>
como se muestra arriba.
Para obtener más información acerca de dir()
, vea Python 2.7 quick reference en New Mexico Tech o the dir() function en ibiblio.org.
Para más información sobre locals()
globals()
y ver locals and globals en Inmersión en Python y una página sobre globals Tecnológico de Nuevo México.
[Comentario: @Kurt: Dio un enlace a enumerate-or-list-all-variables-in-a-program-of-your-favorite-language-here pero esa respuesta tiene un error. El problema allí es: type(name)
en ese ejemplo siempre devolverá <type 'str'>
. Obtiene una lista de las variables, que responde a la pregunta, pero con los tipos incorrectos enumerados al lado. Esto no era obvio en su ejemplo porque todas las variables pasaban a ser cadenas de todos modos; sin embargo, lo que está devolviendo es el tipo del nombre de la variable en lugar del tipo de la variable. Para solucionar esto: en lugar de print type(name)
use print eval('type(' + name + ')')
. Me disculpo por publicar un comentario en la sección de respuestas, pero no tengo privilegios para publicar comentarios, y la otra pregunta está cerrada.]
Estoy dimensionando algunas estructuras según las reglas de una sociedad de clasificación. Entonces, todos los grosores son t, longitudes L, etc. Y a veces se llaman entre sí, por lo que la t se usa en el capítulo.7.2.4. usa t de 3.2.2. Es un cálculo de una sola vez, así que solo uso py como un shell interactivo. – Rook
hecho y hecho: http://stackoverflow.com/questions/430811/enumerate-or-list-all-variables-in-a-program-of-your-favorite-language-here – Kurt