In molte risorse ho scoperto che "scope" e "namespace" sono usati in modo intercambiabile, il che sembra un po 'confuso poiché significano cose diverse.
- L'ambito definisce la regione del codice in cui è disponibile un nome.
- La regola LEGB definisce il modo in cui i nomi vengono cercati.
- Lo spazio dei nomi è un luogo in cui si cercano i nomi.
Poi ho letto:
- "i nomi sono associati a uno spazio dei nomi in base a dove sono assegnati ..." (che credo sia il problema con gli ambiti nello scoping lessicale).
- "Le funzioni aggiungono un ulteriore livello di spazio dei nomi ai tuoi programmi" [ rif. ] (non aggiungono un ambito locale aggiuntivo?)
- "tutti i nomi assegnati all'interno di una definizione di funzione vengono inseriti nell'ambito locale (lo spazio dei nomi associato alla chiamata di funzione)."
- "ambito globale, ovvero uno spazio dei nomi in cui vivono le variabili create (assegnate) al livello superiore del file del modulo."
* tutte le citazioni sono tratte dall'apprendimento di Python 5a edizione ch17
Gli spazi dei nomi in Python sono il modo in cui vengono implementati gli ambiti? Sono la stessa cosa? Qualcuno può illuminarmi?