Opérateurs et expressions
Le langage de programmation Python proposes les opérateurs Python Built-in ainsi que les règles de priorité utilisables dans l'évaluation des expressions.
Opérations sur les nombres
Les opérations suivantes peuvent être appliquées à tous les types numériques :
Opération | Description |
---|---|
x + y | Addition |
x - y | Soustraction |
x * y | Multiplication |
x / y | Division |
x // y | Division tronqué |
x ** y | Puissance de xy |
x % y | Modulo (x mod y), ou restant d'une division. |
-x | Moins unaire |
+x | Plus unaire |
L'opérateur de division de troncature (également connu sous le nom de division de plancher) tronque le résultat en un entier et fonctionne avec les entiers et les nombres à virgule flottante. A partir de cette écriture, le véritable opérateur de division (/) tronque également le résultat en un entier si les opérandes sont des entiers. Par conséquent, 9/4 vaut 1 et non 2,25. Cependant, ce comportement pourrait changer dans une future version de Python, vous devrez donc faire attention. L'opérateur modulo renvoie le reste de la division x//y. Par exemple, 9 % 4 est 1. Pour la virgule flottante, x - (x // y) * y. Pour les nombres complexes, les opérateurs modulo (%) et de division tronquée (//) ne sont pas valides.
Les opérateurs logiques de décalage et de bits suivants ne peuvent être appliqués qu'aux entiers et aux entiers longs :
Opération | Description |
---|---|
x << y | Décalage vers la gauche |
x >> y | Décalage vers la droite |
x & y | ET binaire |
x | y | OU binaire |
x ^ y | OU EXCLUSIF binaire (XOR) |
-x | Négation binaire |
Les opérateurs au niveau du bit supposent que les entiers sont représentés dans une représentation binaire complémentaire à 2. Pour les entiers longs, les opérateurs au niveau du bit comme si le bit de signe était étendu à l'infini vers la gauche. Une certaine prudence est requise si vous travaillez avec des modèles de bits bruts destinés à être cartographiés à des entiers natifs sur le matériel. En effet, le langage de programmation Python ne tronque pas les bits ou ne permet pas aux valeurs de déborder - à la place, un résultat est promu en un entier long.
De plus, vous pouvez appliquer les fonctions intégrées suivantes à tous les types numériques :
Fonction | Description |
---|---|
abs(x) | Valeur absolue |
divmod(x,y) | Retourne (x // Y, x % y) |
pow(x,y,[,modulo]) | Retourne (x ** y) % modulo |
round(x,[n]) | Arrondit au multiple de 10-n le plus proche (nombre à virgule flottante uniquement) |
La fonction abs() renvoie la valeur absolue d'un nombre. La fonction divmod() renvoie le quotient et le reste d'une opération de division. La fonction pow() peut être utilisée à la place de l'opérateur **, mais prend également en charge les fonctions ternaires de puissance-modulo (souvent utilisées dans les algorithmes cryptographiques). La fonction round() arrondit un nombre à virgule flottante, x, aux multiples les plus proches 10 à la puissance moins n. Si n est omis, il est mis à 0. Si x est également proche de deux multiples, l'arrondi est effectué toujours à partir de zéro (par exemple, 0,5 est arrondi à 1 et -0,5 est arrondi à -1). Lorsque vous travaillez avec des entiers, le résultat d'une expression est automatiquement promu en entier long s'il dépasse la précision disponible dans le type entier. De plus, les valeurs True et False de Boolean peuvent être utilisées n'importe où dans une expression et ont les valeurs 1 et 0, respectivement. Les opérateurs de comparaison suivants ont l'interprétation mathématique standard et renvoient une valeur booléenne True pour vrai, False pour faux :
Opération | Description |
---|---|
x < y | Inférieur à |
x > y | Supérieur à |
x == y | Égale à |
x != y | Pas égal à (même chose que <>) |
x >= y | Supérieur ou égale à |
x <= y | Inférieur ou égale à |
Les comparaisons peuvent être enchaînées, comme dans w < x < y < z. Ces expressions sont évaluées comme w < x et x < y et y < z. Les expressions telles que x < y > z sont légales, mais risquent de dérouter quiconque lisant le code (il est important de noter qu'aucune comparaison n'est faite entre x et z dans une telle expression). Les comparaisons autres que l'égalité impliquant des nombres complexes ne sont pas définies et aboutissent à une TypeError.
Les opérations impliquant des nombres ne sont valides que si les opérandes sont du même type. Si le type diffère, une opération de coercition est effectuée pour convertir l'un des types en l'autre, comme suit :
- Si l'un des opérandes est un nombre complexe, l'autre opérande est converti en un nombre complexe.
- Si l'un des opérandes est un nombre à virgule flottante, l'autre est converti en virgule flottante.
- Si l'un des opérandes est un entier long, l'autre est converti en un entier long.
- Sinon, les deux nombres doivent être des entiers et aucune conversion n'est effectuée.
Opérations sur des séquences
Les opérateurs suivants peuvent être appliqués aux types de séquence, y compris les chaînes de caractères, les listes et les tuples :
Opération | Description |
---|---|
s + r | Concaténation |
s * n,n * s | Faire n copie de s, où n est un entier |
s % d | Formatage de chaîne de caractères (chaîne de caractères seulement) |
s[i] | Index |
s[i:j] | Tranche |
s[i:j:stride] | x in s, x not in s - Membre de |
for x in s | Itération |
len(s) | Longueur |
min(s) | Élément minimum |
max(s) | Élément maximum |
L'opérateur + concatène deux séquences du même type. L'opérateur s * n fait n copies d'une séquence. Cependant, ce sont des copies superficielles répliquant des éléments par référence uniquement.