Come RedBlueThing analogico e ha detto:
dir()
dà una lista di variabili scope
globals()
dà un dizionario di variabili globali
locals()
dà un dizionario delle variabili locali
Utilizzo della shell interattiva (versione 2.6.9), dopo aver creato le variabili a = 1
e b = 2
, in esecuzione dir()
dà
['__builtins__', '__doc__', '__name__', '__package__', 'a', 'b']
esecuzione locals()
dà
{'a': 1, 'b': 2, '__builtins__': <module '__builtin__' (built-in)>, '__package__': None, '__name__': '__main__', '__doc__': None}
Esecuzione globals()
dà esattamente la stessa risposta locals()
in questo caso.
Non ho ottenuto alcun modulo, quindi tutte le variabili sono disponibili come variabili locali e globali.locals()
e globals()
elencano i valori delle variabili nonché i nomi; dir()
elenca solo i nomi.
Se importo un modulo ed eseguo locals()
o globals()
all'interno del modulo, dir()
restituisce ancora solo un piccolo numero di variabili; aggiunge __file__
alle variabili elencate sopra. locals()
e globals()
elencano anche le stesse variabili, ma nel processo di stampa del valore di dizionario per __builtin__
, elenca un numero molto più grande di variabili: funzioni integrate, eccezioni e tipi come "'type': <type 'type'>
", anziché solo il breve <module '__builtin__' (built-in)>
come mostrato sopra.
Per ulteriori informazioni su dir()
, vedere Python 2.7 quick reference presso New Mexico Tech o the dir() function su ibiblio.org.
Per maggiori informazioni su locals()
e globals()
vedere locals and globals al Dive Into Python e una pagina su globals presso la New Mexico Tech.
[Commento: @Kurt: hai fornito un collegamento a enumerate-or-list-all-variables-in-a-program-of-your-favorite-language-here ma la risposta ha un errore. Il problema è: type(name)
nell'esempio restituirà sempre <type 'str'>
. Ottieni una lista delle variabili, che risponde alla domanda, ma con i tipi errati elencati accanto a loro. Questo non era ovvio nel tuo esempio perché tutte le variabili erano comunque stringhe; tuttavia, ciò che restituisce è il tipo di nome della variabile anziché il tipo della variabile. Per risolvere questo problema: invece di print type(name)
utilizzare print eval('type(' + name + ')')
. Mi scuso per aver postato un commento nella sezione di risposta, ma non ho i privilegi di postare commenti e l'altra domanda è chiusa.]
Sto dimensionando alcune strutture secondo le regole di una società di classificazione. Quindi tutti gli spessori sono t, lunghezze L ecc. E a volte si chiamano a vicenda, quindi il t usato nel cap.7.2.4. utilizza t da 3.2.2. È un calcolo una tantum, quindi uso py come shell interattiva. – Rook
fatto e fatto: http://stackoverflow.com/questions/430811/enumerate-or-list-all-variables-in-un-program-of-your-favorite-language-here – Kurt