Livre_silo 30 août 2013 16:32 Page 120
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
120
Informatique pour tous
En particulier, l’instruction suivante échoue en indiquant que la variable y n’est pas définie :
print(y)
On dit que la portée de la variable y est limitée au corps de la fonction f. Les variables
globales, elles, ont une portée qui s’étend généralement sur l’ensemble du programme.
Si on souhaite faire référence à une variable globale dans une fonction, par exemple pour
écrire une fonction qui réinitialise la variable globale x à 0, alors il ne faut pas écrire :
def reinitialise():
x = 0
En effet, cela ne fait qu’affecter une variable locale x à la fonction reinitialise. On peut
s’en convaincre en exécutant le code suivant :
reinitialise()
print(x)
et en observant qu’il affiche toujours la valeur 7. Pour que la fonction reinitialise puisse
avoir accès à la variable globale x, il faut désigner cette dernière comme telle :
def reinitialise():
global x
x = 0
Ainsi, le programme :
reinitialise()
print(x)
affiche maintenant 0 et non 7.
De manière générale, si elle n’y est pas explicitement déclarée comme globale, une variable x est locale à la fonction dans le corps de laquelle elle est affectée. Elle est globale si
elle est utilisée dans la fonction sans être affectée ou si elle est déclarée globale.
def f():
global a
a = a + 1
c = 2 * a
return a + b + c
Dans cette fonction, a est globale car elle est déclarée comme telle, b est globale car elle est
utilisée mais non affectée et c est locale car elle est affectée mais n’est pas déclarée globale.
Si une variable x est déclarée globale dans une fonction f mais pas dans une fonction g, et
si le nom de variable x est utilisé dans g, comme dans l’exemple suivant :
def f():
global x
x = 2
def g():
x = 3
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
120
Informatique pour tous
En particulier, l’instruction suivante échoue en indiquant que la variable y n’est pas définie :
print(y)
On dit que la portée de la variable y est limitée au corps de la fonction f. Les variables
globales, elles, ont une portée qui s’étend généralement sur l’ensemble du programme.
Si on souhaite faire référence à une variable globale dans une fonction, par exemple pour
écrire une fonction qui réinitialise la variable globale x à 0, alors il ne faut pas écrire :
def reinitialise():
x = 0
En effet, cela ne fait qu’affecter une variable locale x à la fonction reinitialise. On peut
s’en convaincre en exécutant le code suivant :
reinitialise()
print(x)
et en observant qu’il affiche toujours la valeur 7. Pour que la fonction reinitialise puisse
avoir accès à la variable globale x, il faut désigner cette dernière comme telle :
def reinitialise():
global x
x = 0
Ainsi, le programme :
reinitialise()
print(x)
affiche maintenant 0 et non 7.
De manière générale, si elle n’y est pas explicitement déclarée comme globale, une variable x est locale à la fonction dans le corps de laquelle elle est affectée. Elle est globale si
elle est utilisée dans la fonction sans être affectée ou si elle est déclarée globale.
def f():
global a
a = a + 1
c = 2 * a
return a + b + c
Dans cette fonction, a est globale car elle est déclarée comme telle, b est globale car elle est
utilisée mais non affectée et c est locale car elle est affectée mais n’est pas déclarée globale.
Si une variable x est déclarée globale dans une fonction f mais pas dans une fonction g, et
si le nom de variable x est utilisé dans g, comme dans l’exemple suivant :
def f():
global x
x = 2
def g():
x = 3
