Livre_silo 30 août 2013 16:32 Page 121
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
121
5 – Fonctions
alors il faut considérer qu’on a deux variables x différentes : une globale et une locale dans g.
Dans la fonction g, le nom x désigne la variable locale et non la globale, qui du fait de son
homonymie, ne peut être utilisée. C’est le seul cas où une variable globale a une portée
qui ne couvre pas l’ensemble du programme. Ainsi, le programme suivant affiche 2 car
l’affectation x = 3 concerne la variable x locale à g et non la variable globale x :
x = 1
f()
g()
print(x)
Ainsi, un appel à une fonction peut modifier l’état du programme principal. C’est évidemment possible aussi avec une fonction qui renvoie une valeur : un appel à une telle fonction
est donc à la fois une expression (puisqu’il prend une valeur) et une instruction (puisqu’il
modifie l’état).
SAVOIR-FAIRE Du bon usage des variables globales
De façon générale, une bonne pratique consiste à utiliser les variables globales pour
représenter les constantes du problème. En pratique, on ne devrait pas recourir souvent
à la construction global de Python.
Comme pour les fonctions, il est préférable de donner aux variables globales des noms
longs et explicites, ce qui les distinguera de fait des variables locales qui portent habituellement des noms courts (comme les paramètres formels).
Exercice 5.4 Quelles sont les variables locales et globales de la fonction f ? Qu’affiche le programme
suivant ?
def f():
global a
a = a + 1
c = 2 * a
return a + b + c
a = 3
b = 4
c = 5
print(f())
print(a)
print(b)
print(c)
5.1.3 Ordre d’évaluation
Comme les expressions peuvent modifier la mémoire, l’ordre dans lequel les arguments
d’une fonction sont évalués peut avoir une influence sur le résultat. Ainsi, le programme
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
121
5 – Fonctions
alors il faut considérer qu’on a deux variables x différentes : une globale et une locale dans g.
Dans la fonction g, le nom x désigne la variable locale et non la globale, qui du fait de son
homonymie, ne peut être utilisée. C’est le seul cas où une variable globale a une portée
qui ne couvre pas l’ensemble du programme. Ainsi, le programme suivant affiche 2 car
l’affectation x = 3 concerne la variable x locale à g et non la variable globale x :
x = 1
f()
g()
print(x)
Ainsi, un appel à une fonction peut modifier l’état du programme principal. C’est évidemment possible aussi avec une fonction qui renvoie une valeur : un appel à une telle fonction
est donc à la fois une expression (puisqu’il prend une valeur) et une instruction (puisqu’il
modifie l’état).
SAVOIR-FAIRE Du bon usage des variables globales
De façon générale, une bonne pratique consiste à utiliser les variables globales pour
représenter les constantes du problème. En pratique, on ne devrait pas recourir souvent
à la construction global de Python.
Comme pour les fonctions, il est préférable de donner aux variables globales des noms
longs et explicites, ce qui les distinguera de fait des variables locales qui portent habituellement des noms courts (comme les paramètres formels).
Exercice 5.4 Quelles sont les variables locales et globales de la fonction f ? Qu’affiche le programme
suivant ?
def f():
global a
a = a + 1
c = 2 * a
return a + b + c
a = 3
b = 4
c = 5
print(f())
print(a)
print(b)
print(c)
5.1.3 Ordre d’évaluation
Comme les expressions peuvent modifier la mémoire, l’ordre dans lequel les arguments
d’une fonction sont évalués peut avoir une influence sur le résultat. Ainsi, le programme
