Si consideri il seguente esempio:portata della funzione eval in python
i=7
j=8
k=10
def test():
i=1
j=2
k=3
return dict((name,eval(name)) for name in ['i','j','k'])
Restituisce:
>>> test()
{'i': 7, 'k': 10, 'j': 8}
Perché eval non prende in considerazione le variabili definite all'interno della funzione? Dalla documentazione, facoltativamente puoi passare un globals e un dizionario dei locali. Cosa significa? Infine, come posso modificare questo piccolo caso per farlo funzionare?
è possibile modificare a lavorare aggiungendo 'global' prima dichiarazione di variabile all'interno di una funzione ma questa è una cattiva idea, d'altra parte, l'uso di "eval" è di solito una cattiva idea. – Rusty
Ciò che ha detto arrugginito - a meno che tu non sia sicuro che tu debba usare eval, stare lontano da esso. – l4mpi
@ l4mpi Sapevo che l'eval è una cattiva idea, ma stavo solo giocando con gli ambiti, e non capivo questo comportamento – Pierpaolo