Livre_silo 30 août 2013 16:32 Page 69
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
69
3 – Expressions : types et opérations
L’expression x+3 prend ainsi la valeur 5 dans l’état
. .
2 .
x
car le nom de variable x a été
remplacé par son contenu 2. Dans l’état
. .
4 .
x
, cette expression prend la valeur 7.
Dans l’état
. .
1 .
x
. .
2 .
y
. .
3 .
z
qui comporte plusieurs variables, l’expression x+y*z s’évalue en 1+2*3 et a donc la valeur 7.
Au cours de l’évaluation d’une expression, l’état ne peut pas changer. Ainsi, dans l’expression x*x, aux deux occurrences du nom x sera substituée la même valeur.
Si, lors de l’évaluation d’une expression, un nom de variable est utilisé alors qu’il n’apparaît pas dans l’état courant, il devient impossible d’attribuer une valeur à cette expression.
Python renvoie alors le message suivant :
In [54]: x
NameError: name 'x' is not defined
Pour qu’une expression ait une valeur, il faut donc que chacun des noms de variables qu’elle
contient soit présent dans l’état courant. Toutefois, cela n’est pas suffisant. On a déjà vu
qu’une expression comme 1 // 0 n’avait jamais de valeur ; donc, l’expression 1 // x peut ne
pas avoir de valeur, par exemple dans l’état
. .
0 .
x
, alors que x est bien présent dans cet
état.
POUR ALLER PLUS LOIN Fonction d’évaluation
Il est possible de formaliser cette notion d’évaluation d’expression. On note E l’ensemble
des expressions, D l’ensemble des valeurs possibles (l’union de toutes les constantes de tous
les types) et V l’ensemble des noms de variables. Un état peut alors être décrit sous la forme
d’un sous-ensemble de V × D, dans lequel deux éléments ne partagent pas le même nom
de variable. Cela signifie qu’à chaque nom de variable on associe la valeur correspondante.
L’état
. .
1 .
x
. .
2 .
y
. .
3 .
z
correspond alors à l’ensemble {(x, 1), (y, 2), (z, 3)}.
On note S l’ensemble des états.
Avec ces notations, l’évaluation est une fonction un peu particulière :
eval : E × S S → D
En effet, comme on vient de le voir, elle n’a pas toujours de valeur à associer à un couple
(expression,état). On dit que l’évaluation est une fonction partielle.
¯
Précédent

- 82/402

Suivant