Python3 Operatoren


Was ist ein Operator?

Dieses Kapitel erklärt hauptsächlich Pythons Operatoren.

Nehmen wir ein einfaches Beispiel:

4 + 5 = 9

Im Beispiel,4und5heißtOperand,+heißtOperator。

Die Python-Sprache unterstützt die folgenden Arten von Operatoren:

Als Nächstes lernen wir Pythons Operatoren einen nach dem anderen.


Arithmetische Operatoren in Python

Das Folgende setzt Variablea=10, Variable vorausb=21:

OperatorBeschreibungBeispiel
+Addition - Addiert zwei Objektea + b ergibt 31
-Subtraktion - Ergibt eine negative Zahl oder subtrahiert eine Zahl von einer anderena - b ergibt -11
*Multiplikation – Multipliziert zwei Zahlen oder gibt eine Zeichenkette zurück, die eine bestimmte Anzahl von Malen wiederholt wirda * b ergibt 210
/Division - x geteilt durch yb / a ergibt 2.1
%Modulus - Gibt den Rest der Division zurückb % a ergibt 1
**Potenz – Gibt x hoch y zurücka**b ist 10 hoch 21
//Ganzzahlige Division – Rundet auf die nächstkleinere ganze Zahl ab
>>> 9//2
4
>>> -9//2
-5

Das folgende Beispiel demonstriert die Funktionsweise aller arithmetischen Operatoren in Python:

Beispiel (Python 3.0+)

#!/usr/bin/python3 a = 21 b = 10 c = 0 c = a + b print ("1 - der Wert von c ist:", c) c = a - b print ("2 - der Wert von c ist:", c) c = a * b print ("3 - der Wert von c ist:", c) c = a / b print ("4 - der Wert von c ist:", c) c = a % b print ("5 - der Wert von c ist:", c) # Variablen a, b, c ändern a = 2 b = 3 c = a**b print ("6 - der Wert von c ist:", c) a = 10 b = 5 c = a//b print ("7 - der Wert von c ist:", c)

Das obige Beispiel gibt aus:

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

Python-Vergleichsoperatoren

Im Folgenden wird angenommen, dass Variable a 10 und Variable b 20 ist:

OperatorBeschreibungBeispiel
==Gleich - Vergleicht, ob Objekte gleich sind(a == b) gibt False zurück.
!=Ungleich - Vergleicht, ob zwei Objekte ungleich sind(a != b) gibt True zurück.
>Größer als – Gibt zurück, ob x größer als y ist(a > b) gibt False zurück.
<Kleiner als - Gibt zurück, ob x kleiner als y ist. Alle Vergleichsoperatoren geben 1 für wahr und 0 für falsch zurück. Diese entsprechen jeweils den speziellen Variablen True und False. Beachten Sie die Großschreibung dieser Variablennamen.(a < b) gibt True zurück.
>=Größer oder gleich – Gibt zurück, ob x größer oder gleich y ist.(a >= b) gibt False zurück.
<=Kleiner als oder gleich - Gibt zurück, ob x kleiner als oder gleich y ist.(a <= b) gibt True zurück.

Das folgende Beispiel demonstriert die Funktionsweise aller Vergleichsoperatoren in Python:

Beispiel (Python 3.0+)

#!/usr/bin/python3 a = 21 b = 10 c = 0 if ( a == b ): print ("1 - a ist gleich b") else: print ("1 - a ist nicht gleich b") if ( a != b ): print ("2 - a ist nicht gleich b") else: print ("2 - a ist gleich b") if ( a < b ): print ("3 - a ist kleiner als b") else: print ("3 - a ist größer oder gleich b") if ( a > b ): print ("4 - a ist größer als b") else: print ("4 - a ist kleiner oder gleich b") # Ändern Sie die Werte der Variablen a und b a = 5 b = 20 if ( a <= b ): print ("5 - a ist kleiner oder gleich b") else: print ("5 - a ist größer als b") if ( b >= a ): print ("6 - b ist größer oder gleich a") else: print ("6 - b ist kleiner als a")

Das obige Beispiel gibt aus:

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

Python-Zuweisungsoperatoren

Im Folgenden wird angenommen, dass Variable a 10 und Variable b 20 ist:

OperatorBeschreibungBeispiel
=Einfacher Zuweisungsoperatorc = a + b weist c das Ergebnis von a + b zu
+=Additionszuweisungsoperatorc += a ist äquivalent zu c = c + a
-=Subtraktionszuweisungsoperatorc -= a ist äquivalent zu c = c - a
*=Multiplikationszuweisungsoperatorc *= a ist äquivalent zu c = c * a
/=Divisionszuweisungsoperatorc /= a ist äquivalent zu c = c / a
%=Modulo-Zuweisungsoperatorc %= a ist äquivalent zu c = c % a
**=Potenzzuweisungsoperatorc **= a ist äquivalent zu c = c ** a
//=Floor-Division-Zuweisungsoperatorc //= a ist äquivalent zu c = c // a
:=Walrus-Operator, sein Hauptzweck besteht darin, eine Zuweisung durchzuführen und den zugewiesenen Wert gleichzeitig innerhalb eines Ausdrucks zurückzugeben.Neuer Operator, hinzugefügt in Python 3.8。

In diesem Beispiel vermeidet der Zuweisungsausdruck den zweimaligen Aufruf von len():

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

Das folgende Beispiel demonstriert die Funktionsweise aller Zuweisungsoperatoren in Python:

Beispiel (Python 3.0+)

#!/usr/bin/python3 a = 21 b = 10 c = 0 c = a + b print ("1 - der Wert von c ist:", c) c += a print ("2 - der Wert von c ist:", c) c *= a print ("3 - der Wert von c ist:", c) c /= a print ("4 - der Wert von c ist:", c) c = 2 c %= a print ("5 - der Wert von c ist:", c) c **= a print ("6 - der Wert von c ist:", c) c //= a print ("7 - der Wert von c ist:", c)

Das obige Beispiel gibt aus:

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

In Python 3.8 und später wurde eine neue Syntaxfunktion namens "Walross-Operator" eingeführt, die das:=Symbol verwendet. Der Hauptzweck dieses Operators besteht darin, eine Zuweisung durchzuführen und den zugewiesenen Wert gleichzeitig innerhalb eines Ausdrucks zurückzugeben.

Die Verwendung des Walross-Operators kann den Code in manchen Fällen vereinfachen, insbesondere wenn Sie das Zuweisungsergebnis innerhalb eines Ausdrucks verwenden müssen. Dies ist nützlich, um Schleifenbedingungen oder wiederholte Berechnungen in Ausdrücken zu vereinfachen.

Das folgende ist ein einfaches Beispiel, das die Verwendung des Walross-Operators demonstriert:

Beispiel

# Traditioneller Ansatz
n = 10
if n > 5:
    print(n)

# Verwendung des Walross-Operators
if (n := 10) > 5:
    print(n)
  • if (n := 10) > 5:: Dies verwendet den Walross-Operator (:=)-Syntax. Der Walross-Operator führt eine Zuweisungsoperation innerhalb eines Ausdrucks aus.
    • (n := 10): Weist der Variablenn10 zu und gibt gleichzeitig das Zuweisungsergebnis zurück.
    • > 5: Prüft, ob die zugewiesenengrößer als 5 ist. Wenn die Bedingung wahr ist, führen Sie den folgenden Codeblock aus.
  • print(n): Wenn die Bedingung wahr ist, gib die Variable ausnWert (d. h. 10).

Vorteile des Walross-Operators:

  • Der Walross-Operator (:=) ermöglicht eine Zuweisung innerhalb eines Ausdrucks, was Code-Duplizierung reduzieren und die Lesbarkeit und Prägnanz des Codes verbessern kann.
  • Im obigen Beispiel erfordert der traditionelle Ansatz eine separate Zeile zum Zuweisenn, und dannifAnweisung zur Bedingungsprüfung. Mit dem Walross-Operator kann der Codeifdirekt Zuweisung und Bedingungsprüfung innerhalb der Anweisung durchführen.

Bitweise Operatoren in Python

Bitweise Operatoren behandeln Zahlen zur Berechnung als Binärzahlen. Die Regeln für bitweise Operationen in Python sind wie folgt:

In der folgenden Tabelle ist Variable a 60 und b 13. Die Binärformate sind wie folgt:

a = 0011 1100

b = 0000 1101

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

a&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

~a  = 1100 0011
OperatorBeschreibungBeispiel
&Bitweiser AND-Operator: Für die beiden an der Operation beteiligten Werte gilt: Wenn beide entsprechenden Bits 1 sind, ist das Ergebnisbit 1; andernfalls ist es 0.(a & b) ergibt 12. Binäre Erklärung: 0000 1100
|Bitweiser OR-Operator: Wenn mindestens eines der beiden entsprechenden Binärbits 1 ist, ist das Ergebnisbit 1.(a | b) ergibt 61. Binäre Erklärung: 0011 1101
^Bitweiser XOR-Operator: Wenn die beiden entsprechenden Binärbits unterschiedlich sind, ist das Ergebnis 1.(a ^ b) gibt 49 aus. Binäre Erklärung: 0011 0001
~Bitweiser NOT-Operator: Invertiert jedes Binärbit der Daten, wandelt 1 in 0 und 0 in 1 um.~xähnlich wie-x-1 (~a ) gibt -61 aus. Binäre Erklärung: 1100 0011, in der Zweierkomplementdarstellung für eine vorzeichenbehaftete Binärzahl.
<<Linksverschiebungsoperator: Alle Binärbits des Operanden werden um eine angegebene Anzahl von Stellen nach links verschoben. Die Zahl rechts von "<<" gibt die Anzahl der zu verschiebenden Stellen an. Höherwertige Bits werden verworfen, und niederwertige Bits werden mit 0 aufgefüllt.a << 2 gibt 240 aus. Binäre Erklärung: 1111 0000
>>Rechtsverschiebungsoperator: Alle Binärbits des Operanden links von ">>" werden um eine angegebene Anzahl von Stellen nach rechts verschoben. Die Zahl rechts von ">>" gibt die Anzahl der zu verschiebenden Stellen an.a >> 2 gibt 15 aus. Binäre Erklärung: 0000 1111

Die folgenden Beispiele demonstrieren die Operationen aller bitweisen Operatoren von Python:

Beispiel (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 - Der Wert von c ist:", c) c = a | b # 61 = 0011 1101 print ("2 - Der Wert von c ist:", c) c = a ^ b # 49 = 0011 0001 print ("3 - Der Wert von c ist:", c) c = ~a # -61 = 1100 0011 print ("4 - Der Wert von c ist:", c) c = a << 2 # 240 = 1111 0000 print ("5 - Der Wert von c ist:", c) c = a >> 2 # 15 = 0000 1111 print ("6 - Der Wert von c ist:", c)

Die Ausgabe des obigen Beispiels ist:

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

Logische Operatoren in Python

Die Sprache Python unterstützt logische Operatoren. Im Folgenden wird angenommen, dass die Variable a den Wert 10 und b den Wert 20 hat:

OperatorLogischer AusdruckBeschreibungBeispiel
undx and yBoolesches AND - Wenn x False ist, gibt x and y den Wert von x zurück; andernfalls gibt es den ausgewerteten Wert von y zurück.(a and b) gibt 20 zurück.
oderx or yBoolesches OR - Wenn x True ist, gibt es den Wert von x zurück; andernfalls gibt es den ausgewerteten Wert von y zurück.(a or b) gibt 10 zurück.
notnot xBoolesches NOT – Wenn x True ist, wird False zurückgegeben. Wenn x False ist, wird True zurückgegeben.not(a and b) gibt False zurück

Die Ausgabe des obigen Beispiels ist:

Beispiel (Python 3.0+)

#!/usr/bin/python3 a = 10 b = 20 if ( a and b ): print ("1 – Die Variablen a und b sind beide wahr") else: print ("1 – Eine der Variablen a und b ist nicht wahr") if ( a or b ): print ("2 – Die Variablen a und b sind beide wahr, oder eine der Variablen ist wahr") else: print ("2 – Die Variablen a und b sind beide nicht wahr") # Ändere den Wert der Variablen a a = 0 if ( a and b ): print ("3 – Die Variablen a und b sind beide wahr") else: print ("3 – Eine der Variablen a und b ist nicht wahr") if ( a or b ): print ("4 – Die Variablen a und b sind beide wahr, oder eine der Variablen ist wahr") else: print ("4 – Die Variablen a und b sind beide nicht wahr") if not( a and b ): print ("5 – Die Variablen a und b sind beide falsch, oder eine der Variablen ist falsch") else: print ("5 – Die Variablen a und b sind beide wahr")

Die Ausgabe des obigen Beispiels ist:

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

Python-Mitgliedschaftsoperatoren

Zusätzlich zu den oben genannten Operatoren unterstützt Python auch Mitgliedschaftsoperatoren. Die Testinstanz enthält eine Reihe von Elementen, darunter Strings, Listen oder Tupel.

OperatorBeschreibungBeispiel
inGibt True zurück, wenn ein Wert in der angegebenen Sequenz gefunden wird; andernfalls wird False zurückgegeben. x in y sequence: Gibt True zurück, wenn x in der y-Sequenz enthalten ist.
not inGibt True zurück, wenn ein Wert nicht in der angegebenen Sequenz gefunden wird; andernfalls wird False zurückgegeben. x not in y sequence: Gibt True zurück, wenn x nicht in der y-Sequenz enthalten ist.

Die folgenden Beispiele demonstrieren die Funktionsweise aller Python-Mitgliedschaftsoperatoren:

Beispiel (Python 3.0+)

#!/usr/bin/python3 a = 10 b = 20 list = [1, 2, 3, 4, 5 ] if ( a in list ): print ("1 - Variable a ist in der angegebenen Liste list") else: print ("1 - Variable a ist nicht in der angegebenen Liste list") if ( b not in list ): print ("2 - Variable b ist nicht in der angegebenen Liste list") else: print ("2 - Variable b ist in der angegebenen Liste list") # Ändere den Wert der Variablen a a = 2 if ( a in list ): print ("3 - Variable a ist in der angegebenen Liste list") else: print ("3 - Variable a ist nicht in der angegebenen Liste list")

Die Ausgabe des obigen Beispiels ist:

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

Python-Identitätsoperatoren

Identitätsoperatoren werden verwendet, um die Speicherorte zweier Objekte zu vergleichen.

OperatorBeschreibungBeispiel
istis wird verwendet, um festzustellen, ob zwei Bezeichner auf dasselbe Objekt verweisen x is y, ähnlich wieid(x) == id(y), wenn sie auf dasselbe Objekt verweisen, gibt True zurück; andernfalls gibt es False zurück.
ist nichtis not wird verwendet, um festzustellen, ob zwei Bezeichner auf verschiedene Objekte verweisen x is not y, ähnlich wieid(x) != id(y). Wenn sie nicht auf dasselbe Objekt verweisen, gibt es True zurück; andernfalls gibt es False zurück.

Hinweis: id()Die Funktion wird verwendet, um die Speicheradresse eines Objekts zu ermitteln.

Die folgenden Beispiele demonstrieren die Operationen aller Python-Identitätsoperatoren:

Beispiel (Python 3.0+)

#!/usr/bin/python3 a = 20 b = 20 if ( a is b ): print ("1 - a und b haben dieselbe Identität") else: print ("1 - a und b haben nicht dieselbe Identität") if ( id(a) == id(b) ): print ("2 - a und b haben dieselbe Identität") else: print ("2 - a und b haben nicht dieselbe Identität") # Ändern Sie den Wert der Variable b b = 30 if ( a is b ): print ("3 - a und b haben die gleiche Identität") else: print ("3 - a und b haben nicht dieselbe Identität") if ( a is not b ): print ("4 - a und b haben nicht dieselbe Identität") else: print ("4 - a und b haben dieselbe Identität")

Die Ausgabe des obigen Beispiels ist:

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

Der Unterschied zwischen is und ==:

is wird verwendet, um festzustellen, ob zwei Variablen auf dasselbe Objekt verweisen; == wird verwendet, um festzustellen, ob die Werte der referenzierten Variablen gleich sind.

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

Python-Operatorrangfolge

Die folgende Tabelle listet alle Operatoren von der höchsten zur niedrigsten Priorität auf. Operatoren in derselben Zelle haben dieselbe Priorität. Sofern nicht anders angegeben, beziehen sich Operatoren auf binäre Operationen. Operatoren in derselben Zelle werden von links nach rechts gruppiert (außer bei der Exponentiation, die von rechts nach links gruppiert wird):

Operator

Beschreibung

(expressions...),

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

Ausdrücke in Klammern

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

Subskription, Slicing, Aufruf, Attributreferenz

await x

await-Ausdruck

**

Potenzierung (Potenz)

+x, -x, ~x

Positiv, negativ, bitweises NOT

*, @, /, //, %

Multiplikation, Matrixmultiplikation, Division, Ganzzahldivision, Rest

+, -

Addition und Subtraktion

<<, >>

Bitverschiebungen

&

Bitweises AND

^

Bitweises XOR

|

Bitweises OR

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

Vergleiche, einschließlich Zugehörigkeitstests und Identitätstests

not x

Boolesches NOT

and

Boolesches UND

or

Boolesches OR

if -- else

Bedingter Ausdruck

lambda

Lambda-Ausdruck

:=

Zuweisungsausdruck

Die folgenden Beispiele demonstrieren die Operationen der gesamten Python-Operatorrangfolge:

Beispiel (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 ("Das Ergebnis von (a + b) * c / d ist:", e) e = ((a + b) * c) / d # (30 * 15 ) / 5 print ("Das Ergebnis von ((a + b) * c) / d ist:", e) e = (a + b) * (c / d) # (30) * (15/5) print ("Das Ergebnis von (a + b) * (c / d) ist:", e) e = a + (b * c) / d # 20 + (150/5) print ("Das Ergebnis von a + (b * c) / d ist:", e)

Die Ausgabe des obigen Beispiels ist:

(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 hat höhere Priorität:

Beispiel

x = True y = False z = False print("Fall 1: Standardpriorität (and wird zuerst ausgewertet)") if x or y and z: # Äquivalent zu x or (y and z) print("yes") # Wird ausgegeben else: print("no") print("\nFall 2: Erzwungene Änderung der Rangfolge (or wird zuerst ausgewertet)") if (x or y) and z: # Manuell Klammern hinzufügen, um die Reihenfolge zu ändern print("yes") # Wird nicht ausgegeben else: print("no") # Wird ausgegeben

Das obige Beispiel wertet zuersty and zaus und gibt False zurück, dann liefertx or FalseTrue, und das Ausgabeergebnis ist:

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

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

Hinweis:Python3 unterstützt den<>Operator nicht mehr, Sie können!=stattdessen verwenden, wenn Sie diesen Vergleichsoperator wirklich verwenden müssen, können Sie die folgende Methode verwenden:

>>> from __future__ import barry_as_FLUFL
>>> 1 <> 2
True
Weitere Erweiterungen