Lo spazio dei nomi è un modo per implementare l'ambito.
In Java (o C) il compilatore determina dove una variabile è visibile attraverso l'analisi dell'ambito statico.
In C, l'ambito è il corpo di una funzione o è globale o è esterno. Il compilatore lo spiega e risolve ogni nome di variabile in base alle regole di ambito. I nomi esterni vengono risolti dal linker dopo che tutti i moduli sono stati compilati.
In Java, scope è il corpo di una funzione di metodo o di tutti i metodi di una classe. Alcuni nomi di classi hanno anche un ambito a livello di modulo. Ancora una volta, il compilatore lo calcola al momento della compilazione e risolve ogni nome in base alle regole dell'ambito.
In Python, ogni pacchetto, modulo, classe, funzione e metodo possiede uno "spazio dei nomi" in cui vengono risolti i nomi delle variabili. Inoltre c'è uno spazio dei nomi globale che viene utilizzato se il nome non è nello spazio dei nomi locale.
Ogni nome di variabile viene controllato nel namespace locale (il corpo della funzione, il modulo, ecc.), Quindi controllato nello spazio dei nomi globale.
Le variabili vengono generalmente create solo in uno spazio dei nomi locale. Le istruzioni global
e nonlocal
possono creare variabili diverse dal namespace locale.
Quando una funzione, una funzione di metodo, un modulo o un pacchetto viene valutata (ovvero avvia l'esecuzione) viene creato uno spazio dei nomi. Pensalo come un "contesto di valutazione". Quando una funzione di funzione o metodo, ecc., Termina l'esecuzione, lo spazio dei nomi viene eliminato. Le variabili vengono eliminate. Anche gli oggetti possono essere lasciati cadere.
fonte
2010-10-12 10:05:36
Qualche altro ragazzo PHP ha avuto problemi con lo spazio dei nomi poche ore fa: http://stackoverflow.com/questions/3909002/ Potrebbe valere la pena leggere. Lo spazio dei nomi –