Lorsque vous écrivez des fonctions, il peut y avoir des variables déclarées à l'intérieur du corps d'une fonction. Par exemple, si une variable name est déclarée dans la fonction, elle est considérée comme une nouvelle variable, totalement différente de celle déclarée en dehors de la fonction :
name = 'Helen'
def greet():
name = 'Bob'
print('Hi', name)
greet() # Hi Bob
print('Outside:', name) # Outside: Helen
La variable name est déclarée dans la fonction greet() et sa portée s'étend jusqu'à la fin de la fonction. Les variables déclarées dans une certaine portée sont généralement appelées variables locales. Dès que le programme sort de la fonction, il "oublie" cette variable.
Pour accéder et modifier les variables en dehors de la portée actuelle, nous pouvons utiliser le mot-clé global pour indiquer à Python que nous souhaitons traiter cette variable comme une variable globale :
name = 'Helen'
def greet():
global name
name = 'Bob'
print('Hi', name)
greet() # Hi Bob
print('Outside:', name) # Outside: Bob
Cette fois, la fonction greet() a modifié la variable globale name et a changé sa valeur en Bob.
Défi
Étant donné la fonction suivante, essayez de trouver l'erreur et de la corriger. La fonction doit retourner la somme des valeurs passées jusqu'à présent.
total = 0
def compute_sum(val):
total = total + val
return val
print(compute_sum(10))
print(compute_sum(20))
print(compute_sum(30))