Priorité des Opérateurs en Python

PythonBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous acquerrez une compréhension pratique de la précédence des opérateurs en Python. Tout comme en mathématiques, Python suit des règles spécifiques pour déterminer l'ordre dans lequel les opérations sont effectuées au sein d'une expression. Une bonne maîtrise de ces règles est essentielle pour écrire un code à la fois correct et prévisible.

Nous commencerons par explorer la précédence des opérateurs arithmétiques de base. Ensuite, nous verrons comment les opérateurs de niveau supérieur, tels que l'exponentiation et la comparaison, s'intègrent dans la hiérarchie. Enfin, vous apprendrez à utiliser les parenthèses pour outrepasser l'ordre des opérations par défaut, une technique cruciale à la fois pour contrôler les calculs et pour améliorer la lisibilité du code.

Priorité Arithmétique de Base

En Python, comme en mathématiques standard, certains opérateurs arithmétiques ont une précédence plus élevée que d'autres. Spécifiquement, la multiplication (*) et la division (/) sont effectuées avant l'addition (+) et la soustraction (-). Lorsque les opérateurs ont la même précédence, ils sont évalués de gauche à droite.

Observons ce comportement. Le processus de configuration a déjà créé un fichier pour vous. Dans l'explorateur de fichiers du WebIDE à gauche, trouvez et ouvrez le fichier nommé operator_precedence.py situé dans le répertoire ~/project.

Ajoutez le code suivant dans le fichier :

## Multiplication and division are evaluated before addition and subtraction.
result = 10 + 4 * 3 - 10 / 5
print(result)

Cette expression contient de l'addition, de la multiplication, de la soustraction et de la division. Prédictons l'ordre des opérations :

  1. Python effectuera d'abord la multiplication : 4 * 3 égale 12.
  2. Ensuite, il effectuera la division : 10 / 5 égale 2.0. Notez que la division standard en Python 3 donne toujours un nombre à virgule flottante (float).
  3. L'expression devient alors 10 + 12 - 2.0.
  4. Enfin, il effectuera l'addition et la soustraction de gauche à droite : 10 + 12 donne 22, et 22 - 2.0 donne 20.0.

Enregistrez le fichier en appuyant sur Ctrl + S. Pour exécuter le code, ouvrez un terminal dans le WebIDE (Terminal -> New Terminal) et exécutez la commande suivante :

python ~/project/operator_precedence.py

Vous verrez le résultat calculé s'afficher dans le terminal.

20.0

Le résultat correspond à notre prédiction, confirmant la précédence de la multiplication et de la division sur l'addition et la soustraction.

Opérateurs de Niveau Supérieur

La hiérarchie des opérateurs de Python s'étend au-delà de l'arithmétique de base. L'opérateur d'exponentiation (**) a une précédence plus élevée que la multiplication et la division. De plus, tous les opérateurs arithmétiques ont une précédence plus élevée que les opérateurs de comparaison comme "supérieur à" (>).

Ajoutons d'autres exemples à notre script pour voir cela en action. Modifiez le fichier ~/project/operator_precedence.py pour inclure deux nouvelles expressions :

## Multiplication and division are evaluated before addition and subtraction.
result = 10 + 4 * 3 - 10 / 5
print(result)

## Exponentiation has higher precedence than multiplication.
exp_result = 2 * 3 ** 2
print(exp_result)

## Arithmetic operators have higher precedence than comparison operators.
comp_result = 18 > 5 + 10
print(comp_result)

Analysons les nouvelles lignes :

  1. Dans 2 * 3 ** 2, l'exponentiation 3 ** 2 est calculée en premier, résultant en 9. Ensuite, la multiplication 2 * 9 est effectuée, donnant 18.
  2. Dans 18 > 5 + 10, l'addition 5 + 10 est calculée en premier, résultant en 15. Ensuite, la comparaison 18 > 15 est évaluée, ce qui donne True.

Enregistrez le fichier (Ctrl + S) et exécutez à nouveau le script.

python ~/project/operator_precedence.py

Le terminal affichera maintenant les résultats des trois expressions.

20.0
18
True

Ceci confirme que Python évalue d'abord l'exponentiation, suivie des autres opérations arithmétiques, et enfin, les opérations de comparaison.

Utilisation des Parenthèses pour Contrôler l'Ordre d'Évaluation

Bien que les règles de précédence de Python soient cohérentes, les expressions complexes peuvent être difficiles à lire. Pour outrepasser l'ordre par défaut ou simplement pour clarifier vos intentions, vous pouvez utiliser des parenthèses (). Toute expression enfermée entre parenthèses est évaluée en premier.

Modifions un de nos exemples précédents pour voir l'effet des parenthèses. Ajoutez une nouvelle expression à la fin de ~/project/operator_precedence.py.

## Multiplication and division are evaluated before addition and subtraction.
result = 10 + 4 * 3 - 10 / 5
print(result)

## Exponentiation has higher precedence than multiplication.
exp_result = 2 * 3 ** 2
print(exp_result)

## Arithmetic operators have higher precedence than comparison operators.
comp_result = 18 > 5 + 10
print(comp_result)

## Using parentheses to change the order of evaluation.
forced_result = (10 + 4) * 3
print(forced_result)

Analysons la nouvelle ligne (10 + 4) * 3 :

  1. Parce que 10 + 4 est à l'intérieur de parenthèses, elle est évaluée en premier, résultant en 14.
  2. Ensuite, la multiplication 14 * 3 est effectuée, donnant 42.

Ceci est différent de 10 + 4 * 3, dont nous savons qu'elle donne 22. Les parenthèses ont complètement changé le résultat.

Enregistrez le fichier et exécutez le script une dernière fois.

python ~/project/operator_precedence.py

La sortie inclura maintenant le résultat de notre expression entre parenthèses.

20.0
18
True
42

L'utilisation des parenthèses, même lorsque ce n'est pas strictement nécessaire, est une bonne pratique. Elle rend l'ordre des opérations explicite, ce qui améliore la lisibilité du code et réduit le risque de bogues causés par des malentendus sur la précédence.

Résumé

Dans ce laboratoire, vous avez exploré le concept fondamental de la précédence des opérateurs en Python. Vous avez commencé par l'arithmétique de base, confirmant que la multiplication et la division sont prioritaires par rapport à l'addition et à la soustraction. Vous avez ensuite appris que d'autres opérateurs, comme l'exponentiation et la comparaison, ont leur propre place dans la hiérarchie.

Plus important encore, vous vous êtes exercé à utiliser les parenthèses pour contrôler explicitement l'ordre d'évaluation. Cette compétence est essentielle pour écrire du code qui est non seulement fonctionnellement correct, mais aussi clair et facile à comprendre pour les autres. En maîtrisant la précédence des opérateurs, vous avez franchi une étape importante vers l'écriture de programmes Python plus robustes et fiables.