Python3 opérateurs


Qu'est-ce qu'un opérateur ?

Ce chapitre explique principalement les opérateurs de Python.

Prenons un exemple simple :

4 + 5 = 9

Dans l'exemple,4et5est appeléopérande,+appeléopérateur。

Le langage Python prend en charge les types d'opérateurs suivants:

Ensuite, apprenons les opérateurs de Python un par un.


Opérateurs arithmétiques Python

Ce qui suit suppose que la variablea=10, variableb=21:

OperatorDescriptionExemple
+Addition - Additionne deux objetsa + b donne 31
-Soustraction - Donne un nombre négatif ou soustrait un nombre d'un autrea - b donne -11
*Multiplication - Multiplie deux nombres ou renvoie une chaîne répétée un certain nombre de foisa * b donne 210
/Division - x divisé par yb / a donne 2.1
%Modulo - Renvoie le reste de la divisionb % a donne 1
**Exposant - Renvoie x à la puissance ya**b est 10 à la puissance 21
//Division entière - Arrondit à l'entier inférieur
>>> 9//2
4
>>> -9//2
-5

L'exemple suivant démontre le fonctionnement de tous les opérateurs arithmétiques en Python :

Exemple (Python 3.0+)

#!/usr/bin/python3 a = 21 b = 10 c = 0 c = a + b print ("1 - la valeur de c est :", c) c = a - b print ("2 - la valeur de c est :", c) c = a * b print ("3 - la valeur de c est :", c) c = a / b print ("4 - la valeur de c est :", c) c = a % b print ("5 - la valeur de c est :", c) # Modifier les variables a, b, c a = 2 b = 3 c = a**b print ("6 - la valeur de c est :", c) a = 10 b = 5 c = a//b print ("7 - la valeur de c est :", c)

L'exemple ci-dessus produit :

1 - c 的值为: 31
2 - c 的值为: 11
3 - c 的值为: 210
4 - c 的值为: 2.1
5 - c 的值为: 1
6 - c 的值为: 8
7 - c 的值为: 2

Opérateurs de comparaison Python

Ce qui suit suppose que la variable a vaut 10 et que la variable b vaut 20 :

OperatorDescriptionExemple
==Égal à - Compare si les objets sont égaux(a == b) renvoie False.
!=Différent de - Compare si deux objets ne sont pas égaux(a != b) renvoie True.
>Supérieur à - Renvoie si x est supérieur à y(a > b) renvoie False.
<Inférieur à - Renvoie si x est inférieur à y. Tous les opérateurs de comparaison renvoient 1 pour vrai et 0 pour faux. Ceux-ci sont respectivement équivalents aux variables spéciales True et False. Notez la casse de ces noms de variables.(a < b) renvoie True.
>=Supérieur ou égal à - Renvoie si x est supérieur ou égal à y.(a >= b) renvoie False.
<=Inférieur ou égal à - Renvoie si x est inférieur ou égal à y.(a <= b) renvoie True.

L'exemple suivant démontre le fonctionnement de tous les opérateurs de comparaison en Python :

Exemple (Python 3.0+)

#!/usr/bin/python3 a = 21 b = 10 c = 0 if ( a == b ): print ("1 - a est égal à b") else: print ("1 - a n'est pas égal à b") if ( a != b ): print ("2 - a n'est pas égal à b") else: print ("2 - a est égal à b") if ( a < b ): print ("3 - a est inférieur à b") else: print ("3 - a est supérieur ou égal à b") if ( a > b ): print ("4 - a est supérieur à b") else: print ("4 - a est inférieur ou égal à b") # Modifier les valeurs des variables a et b a = 5 b = 20 if ( a <= b ): print ("5 - a est inférieur ou égal à b") else: print ("5 - a est supérieur à b") if ( b >= a ): print ("6 - b est supérieur ou égal à a") else: print ("6 - b est inférieur à a")

L'exemple ci-dessus produit :

1 - a 不等于 b
2 - a 不等于 b
3 - a 大于等于 b
4 - a 大于 b
5 - a 小于等于 b
6 - b 大于等于 a

Opérateurs d'affectation Python

Ce qui suit suppose que la variable a vaut 10 et que la variable b vaut 20 :

OperatorDescriptionExemple
=Opérateur d'affectation simplec = a + b affecte le résultat de a + b à c
+=Opérateur d'affectation par additionc += a équivaut à c = c + a
-=Opérateur d'affectation par soustractionc -= a équivaut à c = c - a
*=Opérateur d'affectation de multiplicationc *= a est équivalent à c = c * a
/=Opérateur d'affectation de divisionc /= a est équivalent à c = c / a
%=Opérateur d'affectation moduloc %= a est équivalent à c = c % a
**=Opérateur d'affectation d'exposantc **= a est équivalent à c = c ** a
//=Opérateur d'affectation de division entièrec //= a est équivalent à c = c // a
:=Opérateur Walrus, son objectif principal est d'effectuer une affectation et de renvoyer la valeur affectée simultanément dans une expression.Nouvel opérateur ajouté dans Python 3.8。

Dans cet exemple, l'expression d'affectation évite d'appeler len() deux fois :

if (n := len(a)) > 10:
    print(f"List is too long ({n} elements, expected <= 10)")

L'exemple suivant montre le fonctionnement de tous les opérateurs d'affectation en Python :

Exemple (Python 3.0+)

#!/usr/bin/python3 a = 21 b = 10 c = 0 c = a + b print ("1 - la valeur de c est :", c) c += a print ("2 - la valeur de c est :", c) c *= a print ("3 - la valeur de c est :", c) c /= a print ("4 - la valeur de c est :", c) c = 2 c %= a print ("5 - la valeur de c est :", c) c **= a print ("6 - la valeur de c est :", c) c //= a print ("7 - la valeur de c est :", c)

L'exemple ci-dessus produit :

1 - c 的值为: 31
2 - c 的值为: 52
3 - c 的值为: 1092
4 - c 的值为: 52.0
5 - c 的值为: 2
6 - c 的值为: 2097152
7 - c 的值为: 99864

À partir de Python 3.8, une nouvelle fonctionnalité de syntaxe appelée « Walrus » a été introduite, qui utilise le symbole:=. L'objectif principal de cet opérateur est de réaliser une affectation et de renvoyer la valeur affectée dans une expression.

L'utilisation de l'opérateur walrus peut simplifier le code dans certains cas, lorsque vous devez utiliser la valeur dans une expression. Cela est utile pour simplifier les conditions de boucle et les calculs répétés dans les expressions.

Un exemple simple démontrant l'utilisation de l'opérateur walrus :

Exemple

# Approche traditionnelle
n = 10
if n > 5:
    print(n)

# Utilisation de l'opérateur walrus
if (n := 10) > 5:
    print(n)
  • if (n := 10) > 5:: Ceci est l'opérateur walrus (:=: L'opérateur walrus effectue une opération d'affectation dans une expression.
    • (n := 10): Affecte la variablenà 10 et renvoie la valeur affectée en même temps.
    • > 5: Vérifie si lanest supérieure à 5. Si la condition est vraie, exécutez le bloc de code suivant.
  • print(n): Si la condition est vraie, affichez la variablen(c'est-à-dire 10).

Avantages de l'opérateur walrus :

  • L'opérateur walrus (:=) permet une affectation au sein d'une expression, ce qui peut réduire la duplication de code et améliorer la lisibilité et la concision du code.
  • Dans l'exemple ci-dessus, l'approche traditionnelle nécessite une ligne séparée pour affectern, puisifinstruction pour vérifier la condition. Avec l'opérateur walrus, le code peutifeffectuer directement l'affectation et la vérification de la condition au sein de l'instruction.

Opérateurs bit à bit Python

Les opérateurs bit à bit traitent les nombres comme des binaires pour le calcul. Les règles des opérations bit à bit en Python sont les suivantes :

Dans le tableau ci-dessous, la variable a vaut 60 et b vaut 13. Les formats binaires sont les suivants :

a = 0011 1100

b = 0000 1101

-----------------

a&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

~a  = 1100 0011
OperatorDescriptionExemple
&Opérateur ET bit à bit : Pour les deux valeurs impliquées dans l'opération, si les deux bits correspondants sont 1, le bit de résultat est 1 ; sinon, il est 0.(a & b) renvoie 12. Explication binaire : 0000 1100
|Opérateur OU bit à bit : Si au moins un des deux bits binaires correspondants est 1, le bit de résultat est 1.(a | b) renvoie 61. Explication binaire : 0011 1101
^Opérateur OU exclusif bit à bit : Lorsque les deux bits binaires correspondants sont différents, le résultat est 1.(a ^ b) renvoie 49. Explication binaire : 0011 0001
~Opérateur NON bit à bit : inverse chaque bit binaire des données, transformant les 1 en 0 et les 0 en 1.~xsimilaire à-x-1 (~a ) renvoie -61. Explication binaire : 1100 0011, sous forme de complément à deux pour un nombre binaire signé.
<<Opérateur de décalage à gauche : tous les bits binaires de l’opérande sont décalés vers la gauche d’un nombre spécifié de positions. Le nombre à droite de "<<" spécifie le nombre de positions à décaler. Les bits de poids fort sont supprimés, et les bits de poids faible sont remplis avec 0.a << 2 renvoie 240. Explication binaire : 1111 0000
>>Opérateur de décalage à droite : tous les bits binaires de l’opérande à gauche de ">>" sont décalés vers la droite d’un nombre spécifié de positions. Le nombre à droite de ">>" spécifie le nombre de positions à décaler.a >> 2 renvoie 15. Explication binaire : 0000 1111

Les exemples suivants illustrent le fonctionnement de tous les opérateurs bit à bit de Python :

Exemple (Python 3.0+)

#!/usr/bin/python3 a = 60 # 60 = 0011 1100 b = 13 # 13 = 0000 1101 c = 0 c = a & b # 12 = 0000 1100 print ("1 - La valeur de c est :", c) c = a | b # 61 = 0011 1101 print ("2 - La valeur de c est :", c) c = a ^ b # 49 = 0011 0001 print ("3 - La valeur de c est :", c) c = ~a # -61 = 1100 0011 print ("4 - La valeur de c est :", c) c = a << 2 # 240 = 1111 0000 print ("5 - La valeur de c est :", c) c = a >> 2 # 15 = 0000 1111 print ("6 - La valeur de c est :", c)

La sortie de l'exemple ci-dessus est :

1 - c 的值为: 12
2 - c 的值为: 61
3 - c 的值为: 49
4 - c 的值为: -61
5 - c 的值为: 240
6 - c 的值为: 15

Opérateurs logiques Python

Le langage Python prend en charge les opérateurs logiques. Ce qui suit suppose que la variable a vaut 10 et b vaut 20 :

OperatorExpression logiqueDescriptionExemple
etx and yET booléen - Si x est False, x and y renvoie la valeur de x ; sinon, elle renvoie la valeur évaluée de y.(a and b) renvoie 20.
oux or yOU booléen - Si x est True, elle renvoie la valeur de x ; sinon, elle renvoie la valeur évaluée de y.(a or b) renvoie 10.
notnot xNOT booléen - Si x est True, renvoie False. Si x est False, il renvoie True.not(a and b) renvoie False

La sortie de l'exemple ci-dessus est :

Exemple (Python 3.0+)

#!/usr/bin/python3 a = 10 b = 20 if ( a and b ): print ("1 - Les variables a et b sont toutes les deux vraies") else: print ("1 - L'une des variables a et b n'est pas vraie") if ( a or b ): print ("2 - Les variables a et b sont toutes les deux vraies, ou l'une des variables est vraie") else: print ("2 - Les variables a et b sont toutes les deux fausses") # Modifier la valeur de la variable a a = 0 if ( a and b ): print ("3 - Les variables a et b sont toutes les deux vraies") else: print ("3 - L'une des variables a et b n'est pas vraie") if ( a or b ): print ("4 - Les variables a et b sont toutes les deux vraies, ou l'une des variables est vraie") else: print ("4 - Les variables a et b sont toutes les deux fausses") if not( a and b ): print ("5 - Les variables a et b sont toutes les deux fausses, ou l'une des variables est fausse") else: print ("5 - Les variables a et b sont toutes les deux vraies")

La sortie de l'exemple ci-dessus est :

1 - 变量 a 和 b 都为 true
2 - 变量 a 和 b 都为 true,或其中一个变量为 true
3 - 变量 a 和 b 有一个不为 true
4 - 变量 a 和 b 都为 true,或其中一个变量为 true
5 - 变量 a 和 b 都为 false,或其中一个变量为 false

Opérateurs d'appartenance de Python

En plus des opérateurs ci-dessus, Python prend également en charge les opérateurs d'appartenance. L'instance de test contient une série de membres, notamment des chaînes de caractères, des listes ou des tuples.

OperatorDescriptionExemple
inRenvoie True si une valeur est trouvée dans la séquence spécifiée ; sinon, renvoie False. x in y séquence : Renvoie True si x est dans la séquence y.
not inRenvoie True si une valeur n'est pas trouvée dans la séquence spécifiée ; sinon, renvoie False. x not in y séquence : Renvoie True si x n'est pas dans la séquence y.

Les exemples suivants illustrent le fonctionnement de tous les opérateurs d'appartenance de Python :

Exemple (Python 3.0+)

#!/usr/bin/python3 a = 10 b = 20 list = [1, 2, 3, 4, 5 ] if ( a in list ): print ("1 - La variable a est dans la liste donnée list") else: print ("1 - La variable a n'est pas dans la liste donnée list") if ( b not in list ): print ("2 - La variable b n'est pas dans la liste donnée list") else: print ("2 - La variable b est dans la liste donnée list") # Modifier la valeur de la variable a a = 2 if ( a in list ): print ("3 - La variable a est dans la liste donnée list") else: print ("3 - La variable a n'est pas dans la liste donnée list")

La sortie de l'exemple ci-dessus est :

1 - 变量 a 不在给定的列表中 list 中
2 - 变量 b 不在给定的列表中 list 中
3 - 变量 a 在给定的列表中 list 中

Opérateurs d'identité Python

Les opérateurs d'identité sont utilisés pour comparer les emplacements mémoire de deux objets.

OperatorDescriptionExemple
estL'opérateur is est utilisé pour déterminer si deux identifiants font référence au même objet x is y, semblable àid(x) == id(y), s'ils font référence au même objet, renvoie True ; sinon, renvoie False.
n'est pasL'opérateur is not est utilisé pour déterminer si deux identifiants font référence à des objets différents x is not y, semblable àid(x) != id(y). S'ils ne font pas référence au même objet, il renvoie True ; sinon, il renvoie False.

Remarque : id()La fonction est utilisée pour obtenir l'adresse mémoire d'un objet.

Les exemples suivants illustrent le fonctionnement de tous les opérateurs d'identité Python :

Exemple (Python 3.0+)

#!/usr/bin/python3 a = 20 b = 20 if ( a is b ): print ("1 - a et b ont la même identité") else: print ("1 - a et b n'ont pas la même identité") if ( id(a) == id(b) ): print ("2 - a et b ont la même identité") else: print ("2 - a et b n'ont pas la même identité") # Modifier la valeur de la variable b b = 30 if ( a is b ): print ("3 - a et b ont la même identité") else: print ("3 - a et b n'ont pas la même identité") if ( a is not b ): print ("4 - a et b n'ont pas la même identité") else: print ("4 - a et b ont la même identité")

La sortie de l'exemple ci-dessus est :

1 - a 和 b 有相同的标识
2 - a 和 b 有相同的标识
3 - a 和 b 没有相同的标识
4 - a 和 b 没有相同的标识

La différence entre is et == :

is est utilisé pour déterminer si deux variables font référence au même objet ; == est utilisé pour déterminer si les valeurs des variables référencées sont égales.

>>>a = [1, 2, 3] >>> b = a >>> b is a True >>> b == a True >>> b = a[:] >>> b is a False >>> b == a True

Précédence des opérateurs Python

Le tableau suivant répertorie tous les opérateurs, de la priorité la plus élevée à la plus faible. Les opérateurs dans la même cellule ont la même priorité. Les opérateurs se rapportent à des opérations binaires, sauf indication contraire. Les opérateurs dans la même cellule sont regroupés de gauche à droite (sauf l’exponentiation, qui est regroupée de droite à gauche) :

Operator

Description

(expressions...),

[expressions...], {key: value...}, {expressions...}

Expressions entre parenthèses

x[index], x[index:index], x(arguments...), x.attribute

Indiçage, découpage, appel, référence d’attribut

await x

expression await

**

Exponentiation (puissance)

+x, -x, ~x

Positif, négatif, NON binaire

*, @, /, //, %

Multiplication, multiplication matricielle, division, division entière, reste

+, -

Addition et soustraction

<<, >>

Décalages

&

ET bit à bit

^

OU exclusif bit à bit

|

OU bit à bit

in,not in, is,is not, <, <=, >, >=, !=, ==

Comparaisons, y compris les tests d'appartenance et les tests d'identité

not x

NOT booléen

and

ET booléen

or

OR booléen

if -- else

Expression conditionnelle

lambda

expression lambda

:=

expression d'affectation

Les exemples suivants illustrent le fonctionnement de toutes les règles de priorité des opérateurs Python :

Exemple (Python 3.0+)

#!/usr/bin/python3 a = 20 b = 10 c = 15 d = 5 e = 0 e = (a + b) * c / d #( 30 * 15 ) / 5 print ("Le résultat de (a + b) * c / d est :", e) e = ((a + b) * c) / d # (30 * 15 ) / 5 print ("Le résultat de ((a + b) * c) / d est :", e) e = (a + b) * (c / d) # (30) * (15/5) print ("Le résultat de (a + b) * (c / d) est :", e) e = a + (b * c) / d # 20 + (150/5) print ("Le résultat de a + (b * c) / d est :", e)

La sortie de l'exemple ci-dessus est :

(a + b) * c / d 运算结果为: 90.0
((a + b) * c) / d 运算结果为: 90.0
(a + b) * (c / d) 运算结果为: 90.0
a + (b * c) / d 运算结果为: 50.0

and a une priorité plus élevée :

Exemple

x = True y = False z = False print("Cas 1 : priorité par défaut (évaluation de and en premier)") if x or y and z: # Équivalent à x or (y and z) print("yes") # Va afficher else: print("no") print("\nCas 2 : Changement forcé de priorité (évaluation de or en premier)") if (x or y) and z: # Ajouter manuellement des parenthèses pour changer l'ordre print("yes") # Ne va pas afficher else: print("no") # Va afficher

L'exemple ci-dessus évalue d'abordy and zet renvoie False, puisx or Falserenvoie True, et le résultat affiché est :

情况1:默认优先级(先算and)
yes

情况2:强制改变优先级(先算or)
no

Remarque :Python3 ne prend plus en charge l'opérateur<>, vous pouvez utiliser!=à la place, si vous avez vraiment besoin d'utiliser cet opérateur de comparaison, vous pouvez utiliser la méthode suivante :

>>> from __future__ import barry_as_FLUFL
>>> 1 <> 2
True
Autres extensions