English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Python basic tutorial

Python flow control

Funzione in Python

Tipi di dati in Python

Python file operations

Python objects and classes

Python date and time

Advanced knowledge of Python

Python Reference Manual

Parola chiave Global in Python

Before reading this article, please make sure you have masteredPython global, local and non-local variablesSome basic knowledge.

Introduction to global keyword

In Python, the global keyword allows you to modify a variable outside the current scope. It is used to create global variables and modify them in a local context.

Le regole della parola chiave globale sono: globali

Le regole di base della parola chiave globale in Python sono:

  • Quando creiamo una variabile all'interno della funzione, di default è locale.

  • Quando definiamo una variabile all'esterno della funzione, di default è globale. Non è necessario utilizzare la parola chiave global.

  • Usiamo la parola chiave global per leggere e scrivere variabili globali all'interno della funzione.

  • L'uso della parola chiave global all'esterno della funzione non è efficace

Utilizzo della parola chiave globale (esempio)

Facciamo un esempio.

Esempio 1: Accesso alle variabili globali dall'interno della funzione

c = 1  # variabile globale
def add():
    print(c)
add()

Quando eseguiamo il programma sopra, l'output sarà:

1

Ma in alcuni casi, dobbiamo modificare le variabili globali dall'interno della funzione.

Esempio 2: Modificare le variabili globali dall'interno della funzione

c = 1  # variabile globale
    
def add():
    c = c + 2  # aumentare c di 2
    print(c)
add()

Quando eseguiamo il programma sopra, l'output mostrerà un errore:

UnboundLocalError: variabile locale 'c' riferita prima dell'assegnazione

Questo perché possiamo accedere alle variabili globali, ma non possiamo modificarle dall'interno della funzione.

La soluzione è utilizzare la parola chiave global.

Esempio 3: Modificare le variabili globali dall'interno della funzione utilizzando global

c = 0  # variabile globale
def add():
    global c
    c = c + 2  # aumentare di 2
    print("Inside add():", c)
add()
print("In main:", c)

Quando eseguiamo il programma sopra, l'output sarà:

Inside add(): 2
In main: 2

Nel programma sopra, abbiamo definito c come una parola chiave globale interna alla funzione add()
Poi, aumentiamo la variabile c di 1, ossia c = c + 2. Poi chiamiamo la funzione add(). Infine, stampiamo la variabile globale c.
Come vediamo, anche le variabili globali al di fuori delle funzioni sono state modificate c = 2.

Variabili globali tra moduli Python

In Python, creiamo un modulo config.py per salvare le variabili globali e condividere informazioni tra moduli Python nello stesso programma.

Ecco come condividiamo le variabili globali tra moduli Python.

Esempio 4: Condivisione delle variabili globali tra moduli Python

Creare un file config.py per memorizzare le variabili globali

a = 0
b = "empty"

Creare un file update.py, modificare le variabili globali

import config
config.a = 10
config.b = "alphabet"

Crea un file main.py per testare le variazioni dei valori

import config
import update
print(config.a)
print(config.b)

Quando eseguiamo il file main.py, l'output sarà

10
alphabet

Nell'esempio sopra, abbiamo creato tre file: config.py, update.py e main.py.

Il modulo config.py memorizzaaedel valore di bvariabile globale. Nel file update.py, importiamo il modulo config.py e lo modificiamoaebdel valore. Allo stesso modo, nel file main.py, importiamo contemporaneamente i moduli config.py e update.py. Infine, stampiamo e testiamo il valore delle variabili globali, indipendentemente dal fatto che siano state modificate o meno.

Variabile globale nella funzione annidata

Questo è il metodo per utilizzare variabili globali in funzioni annidate.

Esempio 5: Uso di variabili globali in funzioni annidate

def foo():
    x = 20
    def bar():
        global x
        x = 25
    
    print("Prima della chiamata a bar: ", x)
    print("Chiamata immediata a bar")
    bar()
    print("Dopo la chiamata a bar: ", x)
foo()
print("x nel corpo del programma: ", x)

Output:

Prima della chiamata a bar: 20
Chiamata immediata a bar
Dopo la chiamata a bar(): 20
x nel corpo del programma: 25

Nel programma sopra, abbiamo dichiarato una variabile globale nell'funzione bar() annidata. Nella funzione foo(), x non ha alcun impatto sulla parola chiave globale.
Prima e dopo la chiamata a bar(), la variabile x accetta il valore del variabile locale, ovvero x = 20. Al di fuori della funzione foo(), la variabile x adotterà il valore definito nella funzione bar(), ovvero x = 25. Questo perché abbiamo usato la parola chiave global in bar() (ambito locale) per creare una variabile globale.
Se facciamo qualsiasi modifica nella funzione bar(), queste modifiche appariranno al di fuori dell'ambito locale, ovvero in foo().