Tag Archives: namespace python

Il namespace in Python

python

Con la parola namespace in Python, che tradotto suonerebbe come spazio dei nomi, si intende un dizionario Python che contiene i nomi delle variabili (chiavi) ed i valori di tali variabili (valori) in modo da tenere traccia delle variabili utilizzate in quel particolare contesto.

In generale, uno spazio dei nomi (a volte chiamato anche contesto) è un sistema di denominazione per creare dei nomi univoci onde evitare ambiguità. Tutti noi utilizziamo nella vita quotidiana un sistema del tipo namespace, vale a dire l’identificazione di persone attraverso nome cognome. Un altro esempio è relativo alle reti: ogni dispositivo di rete (workstation, server di stampa, …) ha bisogno di un nome e di un indirizzo univoco. Ancora un altro esempio è la struttura delle directory del file system. Lo stesso nome file può essere utilizzato in diverse directory, i file sono accessibili unicamente attraverso dei percorsi.
Molti linguaggi di programmazione usano spazi dei nomi o contesti per gli identificatori. Un identificatore definito in un namespace è associato a quel namespace. In questo modo, lo stesso identificatore può essere definito indipendentemente in più domini. (Come gli stessi nomi di file in directory nei differenti linguaggi di programmazione), che supportano spazi dei nomi, possono avere regole diverse che determinano a quale spazio dei nomi un identificatore appartiene.

Alcuni spazi dei nomi in Python (namespace in Python) sono:

  • global names
  • local names
  • built-in names

Ed allora ogni blocco di un programma Python, dispone dei suoi namespace, ad esempio una funzione ha il suo namespace, denominato namespace locale, che contiene i riferimenti a tutte le variabili utilizzate dalla funzione, ed i suoi argomenti. Così come un modulo ha il suo namespace, denominato questa volta namespace globale, in quanto contiene i riferimenti alle variabili del modulo, alle funzioni, alle classi, ed infine ai moduli importati. C’è poi il namespace built-in, accessibile da ogni modulo, che contiene le funzioni built-in e le eccezioni.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO: