Variabile di ambito

Quando scriviamo funzioni, potremmo avere variabili dichiarate all'interno del corpo di una funzione. Ad esempio, se una variabile name è dichiarata nella funzione, viene considerata una nuova variabile, totalmente diversa da quella dichiarata al di fuori della funzione:
name = 'Helen'
def greet():
    name = 'Bob'
    print('Hi', name)

greet()                  # Hi Bob
print('Outside:', name)  # Outside: Helen
La variabile name è dichiarata nella funzione greet() e il suo ambito dura fino alla fine della funzione. Le variabili dichiarate all'interno di un certo ambito sono solitamente chiamate variabili locali. Appena il programma esce dalla funzione, "dimentica" quella variabile.
Per accedere e modificare le variabili al di fuori dell'ambito corrente, possiamo usare la parola chiave global per dire a Python che vogliamo trattare quella variabile come globale:
name = 'Helen'
def greet():
    global name
    name = 'Bob'
    print('Hi', name)

greet()                  # Hi Bob
print('Outside:', name)  # Outside: Bob
Questa volta la funzione greet() ha modificato la variabile globale name e ne ha cambiato il valore in Bob.

Sfida

Data la seguente funzione, prova a trovare l'errore e a correggerlo. La funzione dovrebbe restituire la somma dei valori passati finora.
total = 0

def compute_sum(val):
    total = total + val
    return val

print(compute_sum(10))
print(compute_sum(20))
print(compute_sum(30))
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue