L'uscita del dir()
quando viene chiamato senza argomenti è quasi uguale a locals()
, ma dir()
restituisce una lista di stringhe e locals()
restituisce un dizionario e si può aggiornare tale dizionario per aggiungere nuove variabili.
dir(...)
dir([object]) -> list of strings
If called without an argument, return the names in the current scope.
locals(...)
locals() -> dictionary
Update and return a dictionary containing the current scope's local variables.
Tipo:
>>> type(locals())
<type 'dict'>
>>> type(dir())
<type 'list'>
aggiornare o aggiungere nuove variabili utilizzando locals()
:
In [2]: locals()['a']=2
In [3]: a
Out[3]: 2
utilizzando dir()
, tuttavia, questo non funziona:
In [7]: dir()[-2]
Out[7]: 'a'
In [8]: dir()[-2]=10
In [9]: dir()[-2]
Out[9]: 'a'
In [10]: a
Out[10]: 2
fonte
2012-10-16 15:31:36
Che problema stai cercando di risolvere? Perché hai bisogno di sapere? – phant0m
Ho bisogno di conoscere l'architettura del linguaggio per scrivere codice migliore. La domanda esatta è "quale funzione utilizzare per verificare se alcune variabili sono definite nell'ambito locale". – grigoryvp