6.14 L'istruzione exec

exec_stmt  ::=  "exec" expression ["in" expression ["," expression]]
Potete scaricare il file originale (in Inglese) come testo.

Questa istruzione supporta l'esecuzione dinamica di codice Python. La prima espressione dovrebbe valutare se sia una stringa, un file oggetto aperto o un oggetto codice. Se è una stringa, viene analizzata come un insieme di istruzioni Python che quindi vanno eseguite (a meno che non avvengano errori di esecuzione). Se è un file aperto, viene analizzato prima della fine del file EOF ed eseguito. Se è un oggetto codice viene semplicemente eseguito.

In tutti i casi, se le parti facoltative vengono omesse, il codice viene eseguito nella forma corrente. Se viene specificata solo la prima espressione dopo in, dovrebbe essere un dizionario, che verrà usato sia per la variabili globali che per quelle locali. Se sono date due espressioni, devono essere entrambe dizionari e saranno usati rispettivamente per la variabili globali e locali.

Come effetto collaterale, un'implementazione può inserire ulteriori chiavi nei dizionari forniti oltre le loro corrispondenze ai nomi di variabile impostate dal codice eseguito. Per esempio, l'implementazione corrente può aggiungere un riferimento al dizionario del modulo built-in __builtin__ sotto la chiave __builtins__ (!).

Suggerimento per i programmatori: la valutazione dinamica delle espressioni viene supportata dalla funzione built-in eval(). Le funzioni built-in globals() e locals() restituiscono rispettivamente il corrente dizionario globale e locale, che può essere utile per passare valori nell'uso di exec.

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.