Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Licence CC BY-NC-ND Thierry Parmentelat & Arnaud Legout Inria - UCA

Complément - niveau basique

Expressions et instructions

Les constructions python que nous avons vues jusqu’ici peuvent se ranger en deux familles :

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 1

mais qu’il est fortement recommandé d’utiliser, comme on l’a fait, un parenthésage pour lever toute ambiguïté.

Pour en savoir plus

De manière générale, les PEP rassemblent les discussions préalables à toutes les évolutions majeures du langage Python.