Einführung in Python-Operatoren
Alle Python-Operatortypen erklärt — Arithmetik, Vergleich, Zuweisung, Logik, Bitweise, Identität und Mitgliedschaft — mit Beispielen und Rangfolgeregeln.
Operatoren sind die Symbole und Schlüsselwörter, die Python mitteilen, welche Aktion an einem oder mehreren Werten ausgeführt werden soll. Jeder sinnvolle Python-Ausdruck — von x + 1 bis if age >= 18 — verwendet mindestens einen Operator. Python unterteilt seine Operatoren in sieben Kategorien: arithmetische, Vergleichs-, Zuweisungs-, logische, Identitäts-, Mitgliedschafts- und bitweise Operatoren. Dieses Kapitel erklärt jede Kategorie, zeigt, wann man sie verwendet, und weist auf häufige Fallstricke hin.
Arithmetische Operatoren
Arithmetische Operatoren führen mathematische Berechnungen durch. Python stellt sieben davon bereit:
| Operator | Name | Beispiel | Ergebnis |
|---|---|---|---|
+ | Addition | 17 + 5 | 22 |
- | Subtraktion | 17 - 5 | 12 |
* | Multiplikation | 17 * 5 | 85 |
/ | Division | 17 / 5 | 3.4 |
% | Modulus (Rest) | 17 % 5 | 2 |
** | Potenzierung | 2 ** 8 | 256 |
// | Ganzzahldivision | 17 // 5 | 3 |
Zwei Operatoren verdienen besondere Aufmerksamkeit:
/gibt in Python 3 immer einenfloatzurück, auch bei der Division zweier ganzer Zahlen (4 / 2ergibt2.0, nicht2).//(Ganzzahldivision) rundet das Ergebnis in Richtung negativer Unendlichkeit, nicht in Richtung null. Daher ist-7 // 2gleich-4, nicht-3.
Häufige Anwendung: gerade oder ungerade prüfen
Der Modulus-Operator (%) ist die Standardmethode zum Testen der Teilbarkeit:
number = 42
if number % 2 == 0:
print("even")
else:
print("odd")
# Output: evenVergleichsoperatoren
Vergleichsoperatoren vergleichen zwei Werte und geben immer True oder False zurück. Sie werden in Bedingungen, while-Schleifen und überall dort verwendet, wo ein boolesches Ergebnis benötigt wird.
| Operator | Bedeutung | Beispiel | Ergebnis |
|---|---|---|---|
== | Gleich | 5 == 5 | True |
!= | Ungleich | 5 != 3 | True |
> | Größer als | 5 > 3 | True |
< | Kleiner als | 5 < 3 | False |
>= | Größer als oder gleich | 5 >= 5 | True |
<= | Kleiner als oder gleich | 5 <= 4 | False |
Vergleiche verketten
Python ermöglicht es, mehrere Vergleiche in einem Ausdruck zu verketten, was sich natürlicher liest als in den meisten anderen Sprachen:
x = 7
print(1 < x < 10) # True — equivalent to (1 < x) and (x < 10)
print(0 < x < 5) # FalseFallstrick: == vs. =
= ist der Zuweisungsoperator; == prüft Gleichheit. Die Verwendung von = innerhalb einer Bedingung ist in Python ein SyntaxError (anders als in einigen anderen Sprachen, wo es stillschweigend zuweist).
Zuweisungsoperatoren
Zuweisungsoperatoren speichern Werte in Variablen. Die zusammengesetzten Formen (+=, -=, …) kombinieren eine arithmetische oder bitweise Operation mit einer Zuweisung und machen den Code kompakter.
| Operator | Entspricht | Beispiel |
|---|---|---|
= | — | x = 10 |
+= | x = x + n | x += 3 |
-= | x = x - n | x -= 3 |
*= | x = x * n | x *= 3 |
/= | x = x / n | x /= 3 |
//= | x = x // n | x //= 3 |
%= | x = x % n | x %= 3 |
**= | x = x ** n | x **= 3 |
&= | x = x & n | x &= 0b1111 |
|= | x = x | n | x |= 0b1000 |
^= | x = x ^ n | x ^= 0b0101 |
<<= | x = x << n | x <<= 1 |
>>= | x = x >> n | x >>= 1 |
Der Walrus-Operator := (Python 3.8+)
Der Walrus-Operator weist einen Wert innerhalb eines Ausdrucks zu. Er ist nützlich, wenn man ein Ergebnis sowohl auswerten als auch speichern möchte, ohne den Ausdruck zweimal schreiben zu müssen:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# Without walrus: compute length twice
if len(numbers) > 5:
print(f"Long list: {len(numbers)} items")
# With walrus: assign once, use in condition and body
if (n := len(numbers)) > 5:
print(f"Long list: {n} items")
# Output: Long list: 10 itemsLogische Operatoren
Logische Operatoren kombinieren oder invertieren boolesche Ausdrücke. Python verwendet englische Schlüsselwörter anstelle von Symbolen (&&, ||, !).
| Operator | Bedeutung | Beispiel | Ergebnis |
|---|---|---|---|
and | Wahr, wenn beide Seiten wahr sind | True and False | False |
or | Wahr, wenn mindestens eine Seite wahr ist | True or False | True |
not | Invertiert den booleschen Wert | not True | False |
Kurzschlussauswertung
Python wertet and und or träge (von links nach rechts) aus und hält an, sobald das Ergebnis feststeht:
False and <anything>— die rechte Seite wird nie ausgewertet.True or <anything>— die rechte Seite wird nie ausgewertet.
Dies ist wichtig, wenn die rechte Seite einen Nebeneffekt hat oder einen Fehler auslösen könnte:
user_input = ""
name = user_input or "Anonymous"
print(name) # Anonymous (empty string is falsy, so "Anonymous" is returned)Truthy- und Falsy-Werte
Logische Operatoren funktionieren mit jedem Wert, nicht nur mit True/False. Python behandelt 0, "", None, [], {} und () als falsy; alles andere ist truthy.
Siehe das Kapitel Python Data Types für eine vollständige Liste der falsy-Werte je Typ.
Identitätsoperatoren
Identitätsoperatoren prüfen, ob zwei Variablen auf dasselbe Objekt im Speicher zeigen, nicht nur ob sie gleiche Werte haben.
| Operator | Bedeutung |
|---|---|
is | True, wenn beide Variablen dasselbe Objekt referenzieren |
is not | True, wenn sie verschiedene Objekte referenzieren |
Wann is vs. == verwenden
Verwende is nur dann, wenn du bewusst die Objektidentität prüfen möchtest — am häufigsten beim Vergleich mit Singletons:
value = None
if value is None: # correct idiom
print("No value provided")
# Never do: if value == None — works but is considered bad stylePython speichert kleine ganzzahlige Werte (typischerweise -5 bis 256) und internierte Strings zwischen, sodass a is b für zwei getrennt erstellte kleine ganzzahlige Werte True zurückgeben kann. Verlasse dich bei ganzen Zahlen oder Strings niemals auf dieses Verhalten — verwende == für Wertgleichheit.
Mitgliedschaftsoperatoren
Mitgliedschaftsoperatoren prüfen, ob ein Wert in einer Sequenz (Liste, Tupel, string, set oder Dictionary) vorhanden ist.
| Operator | Bedeutung |
|---|---|
in | True, wenn der Wert in der Sequenz gefunden wird |
not in | True, wenn der Wert nicht gefunden wird |
Hinweis zur Performance
Bei Listen und Tupeln prüft in jedes Element der Reihe nach (O(n)). Bei Sets und Dictionary-Schlüsseln verwendet in eine Hashtabelle und läuft in konstanter Zeit (O(1)). Bevorzuge ein set, wenn du viele Mitgliedschaftsprüfungen an einer großen Sammlung durchführen musst.
Bitweise Operatoren
Bitweise Operatoren arbeiten auf der binären Darstellung von ganzen Zahlen und manipulieren einzelne Bits.
| Operator | Name | Beispiel | Ergebnis | Hinweise |
|---|---|---|---|---|
& | AND | 5 & 3 | 1 | Bit ist 1 nur wenn beide Bits 1 sind |
| | OR | 5 | 3 | 7 | Bit ist 1, wenn eines der Bits 1 ist |
^ | XOR | 5 ^ 3 | 6 | Bit ist 1, wenn die Bits verschieden sind |
~ | NOT | ~5 | -6 | Invertiert alle Bits; Ergebnis ist -(n+1) |
<< | Linksshift | 5 << 1 | 10 | Verschiebt Bits nach links (Multiplikation mit 2) |
>> | Rechtsshift | 20 >> 2 | 5 | Verschiebt Bits nach rechts (Division durch 2) |
Warum bitweise Operatoren wichtig sind
Im alltäglichen Python-Code wirst du bitweise Operatoren nicht direkt verwenden, aber sie treten häufig auf in:
- Flags und Berechtigungen — Bitmasks kombinieren, um mehrere Optionen in einer einzigen ganzen Zahl darzustellen.
- Kryptographie und Hashing — XOR ist ein grundlegender Baustein.
- Effiziente Mathematik —
n << 1ist in leistungskritischen Schleifen schneller alsn * 2. - Arbeit mit Binärprotokollen — Netzwerkpakete oder Datei-Header parsen.
Operatorrangfolge
Wenn ein Ausdruck mehrere Operatoren mischt, wertet Python sie in einer festen Reihenfolge aus (höchste Rangfolge zuerst):
| Priorität | Operatoren |
|---|---|
| 1 (höchste) | ** |
| 2 | +x, -x, ~x (unär) |
| 3 | *, /, //, % |
| 4 | +, - |
| 5 | <<, >> |
| 6 | & |
| 7 | ^ |
| 8 | | |
| 9 | ==, !=, <, >, <=, >=, is, is not, in, not in |
| 10 | not |
| 11 | and |
| 12 (niedrigste) | or |
# Multiplication before addition (standard math rules apply)
print(2 + 3 * 4) # 14, not 20
# Use parentheses to override
print((2 + 3) * 4) # 20
# ** is right-associative: 2 ** 3 ** 2 = 2 ** (3**2) = 2**9
print(2 ** 3 ** 2) # 512, not 64
# Comparisons before logical operators
print(2 + 3 > 4 and 10 % 3 == 1) # True and True → TrueIm Zweifelsfall Klammern verwenden. Sie machen die Rangfolge explizit und verbessern die Lesbarkeit.
Zusammenfassung
| Kategorie | Operatoren | Hauptverwendung |
|---|---|---|
| Arithmetisch | + - * / % ** // | Mathematische Berechnungen |
| Vergleich | == != > < >= <= | Bedingungen, Filtern |
| Zuweisung | = += -= *= /= //= %= **= &= |= ^= <<= >>= | Variablen speichern und aktualisieren |
| Logisch | and or not | Boolesche Bedingungen kombinieren |
| Identität | is is not | Singleton-Prüfungen (z. B. is None) |
| Mitgliedschaft | in not in | Sequenzen und Sets durchsuchen |
| Bitweise | & | ^ ~ << >> | Binäre Flags, Low-Level-Daten |
Für verwandte Themen siehe Python Variables, Python If...Else und Python Data Types.