Complément - niveau basique¶
Expressions et instructions¶
Les constructions python que nous avons vues jusqu’ici peuvent se ranger en deux familles :
d’une part les expressions sont les fragments de code qui retournent une valeur ;
c’est le cas lorsqu’on invoque n’importe quel opérateur numérique, pour les appels de fonctions, ...
d’autre part les instructions ;
dans cette famille, nous avons vu par exemple l’affectation et
if, et nous en verrons bien d’autres.
La différence essentielle est que les expressions peuvent être combinées entre elles pour faire des expressions arbitrairement grosses. Aussi, si vous avez un doute pour savoir si vous avez affaire à une expression ou à une instruction, demandez-vous si vous pourriez utiliser ce code comme membre droit d’une affectation. Si oui, vous avez une expression.
if est une instruction¶
La forme du if qui vous a été présentée pendant la vidéo ne peut pas servir à renvoyer une valeur, c’est donc une instruction.
Imaginons maintenant qu’on veuille écrire quelque chose d’aussi simple que “affecter à y la valeur 12 ou 35, selon que x est vrai ou non”.
Avec les notions introduites jusqu’ici, il nous faudrait écrire ceci :
x = True # ou quoi que ce soit d'autre
if x:
y = 12
else:
y = 35
print(y)12
Expression conditionnelle¶
Il existe en Python une expression qui fait le même genre de test ; c’est la forme dite d’expression conditionnelle, qui est une expression à part entière, avec la syntaxe :
<résultat_si_vrai> if <condition> else <résultat_si_faux>Ainsi on pourrait écrire l’exemple ci-dessus de manière plus simple et plus concise comme ceci :
y = 12 if x else 35
print(y)The history saving thread hit an unexpected error (OperationalError('attempt to write a readonly database')).History will not be written to the database.
12
Cette construction peut souvent rendre le style de programmation plus fonctionnel et plus fluide.
Complément - niveau intermédiaire¶
Imbrications¶
Puisque cette forme est une expression, on peut l’utiliser dans une autre expression conditionnelle, comme ici :
# on veut calculer en fonction d'une entrée x
# une sortie qui vaudra
# -1 si x < -10
# 0 si -10 <= x <= 10
# 1 si x > 10
x = 5 # ou quoi que ce soit d'autre
valeur = -1 if x < -10 else (0 if x <= 10 else 1)
print(valeur)0
Remarquez bien que cet exemple est équivalent à la ligne
valeur = -1 if x < -10 else 0 if x <= 10 else 1mais qu’il est fortement recommandé d’utiliser, comme on l’a fait, un parenthésage pour lever toute ambiguïté.
Pour en savoir plus¶
La section sur les expressions conditionnelles de la documentation Python.
Le PEP308 qui résume les discussions ayant donné lieu au choix de la syntaxe adoptée.
De manière générale, les PEP rassemblent les discussions préalables à toutes les évolutions majeures du langage Python.