lettura facile

La funzione globals() in Python

La funzione globals() ti permette di accedere alle etichette del namespace globale di Python.

globals()

Quando chiami la funzione globals() in Python, otterrai un dizionario che mappa ogni nome globale al suo valore corrente.

Questa funzione restituisce un dizionario con tutti i nomi definiti a livello globale nel tuo programma. Per "nome" (o etichetta) si intende praticamente tutto ciò a cui puoi assegnare un valore: variabili, funzioni, classi, moduli, ecc.

Il dizionario contiene tutte le informazioni relative allo spazio dei nomi globale del programma in esecuzione, il che significa che ogni variabile globale e il suo valore possono essere visualizzati o modificati attraverso questo dizionario. Non solo puoi vedere quali nomi globali sono stati definiti e quali valori hanno, ma puoi anche modificarli dinamicamente!

Ad esempio, definisci due variabili.

x = 5
y = "Ciao, mondo!"

Ora vediamo cosa c'è nel dizionario globale

print(globals())

Questo comando stampa il contenuto del dizionario globale, inclusi `x`, `y`, e qualsiasi altra cosa definita a livello globale.

{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x7f979d377c10>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': '/home/main.py', '__cached__': None, 'x': 5, 'y': 'Ciao, mondo!'}

Noterai che, oltre alle variabili che hai definito, ci sono anche altri nomi, definiti dallo stesso Python o dai moduli che hai importato.

Modificare una variabile usando globals()

Ora, facciamo qualcosa di più interessante: modificare una variabile globale usando globals().

globals()['x'] = 10

Ora x è stato cambiato a 10

print(x)

10

Con `globals()['x'] = 10`, hai cambiato il valore della variabile globale `x` da `5` a `10`, senza riferirti direttamente a `x`.

Hai lavorato con il dizionario globale per apportare questa modifica.

Facciamo un altro esempio.

Immagina di avere un programma che definisce alcune variabili globali all'inizio e vogliamo aggiungere nuove variabili globali in modo dinamico durante l'esecuzione del programma.

Definisci alcune variabili globali

variabile1 = "Sono una variabile globale"
variabile2 = 42

Ora aggiungi una nuova variabile globale dinamicamente

globals()['variabile3'] = "Questa è stata aggiunta dinamicamente!"

In questo esempio hai inizializzato due variabili globali, `variabile1` e `variabile2`, nel modo tradizionale.

Poi, usando globals(), hai aggiunto una terza variabile globale, `variabile3`, in modo dinamico.

Questo dimostra come la funzione globals() possa essere usata per manipolare lo spazio dei nomi globale del tuo programma Python in modo potente e flessibile.

Bisogna però essere cauti nell'usare globals() per modificare lo stato globale di un programma. È potente, ma anche potenzialmente pericoloso se usato senza attenzione, perché rende il codice più difficile da leggere e da comprendere. È una di quelle funzionalità da usare con parsimonia. Quindi, usala solo quando strettamente necessario. Ad esempio, per metaprogrammazione o per gestire situazioni dinamiche che altrimenti sarebbero complesse da implementare.

 




Se qualcosa non ti è chiaro, scrivi la tua domanda nei commenti.




FacebookTwitterLinkedinLinkedin