4.1.1 Interazione con caratteristiche dinamiche

Ci sono diversi casi dove le dichiarazioni di Python sono illegali quando usate in congiunzione con campi annidati che contengono variabili libere.

Se una variabile è riferita ad un campo incluso, è illegale cancellare il nome. Un errore verrà riportato al momento della compilazione.

Se la forma con il carattere jolly di import -- "import *" -- viene usata in una funzione, e la funzione contiene o è un blocco annidato con variabili libere, il compilatore solleverà un'eccezione SyntaxError.

Se viene usato exec in una funzione, e la funzione contiene o è un blocco annidato con variabili libere, il compilatore solleverà un'eccezione SyntaxError, a meno che l'exec non specifichi esplicitamente lo spazio dei nomi locale per l'exec. (In altre parole, "exec obj" dovrebbe essere illegale, ma "exec obj in ns" dovrebbe essere legale.)

Le funzioni eval(), execfile(), input() e l'istruzione exec non hanno accesso all'ambiente completo per la risoluzione dei nomi. I nomi potrebbero essere risolti nello spazio dei nomi locale o globale del chiamante. Le variabili libere non vengono risolte nel più vicino spazio dei nomi, ma nello spazio dei nomi globale.4.1 L'istruzione exec e le funzioni eval() ed execfile() hanno argomenti facoltativi per sovrascrivere lo spazio dei nomi locale e globale. Se un solo spazio dei nomi viene specificato, questo viene utilizzato da entrambi.



Footnotes

... globale.4.1
Questa limitazione si verifica poiché il codice che viene eseguito da queste operazioni non è disponibile quando il modulo viene compilato.
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.