Operatoren
Siehe auch datenstrukturen-collections, Abschnitt “Sets bzw. Mengen”.
1 Vergleichsoperatoren
| Ausdruck | Bedeutung |
|---|---|
a == b | a ist gleich b |
a != b | a ist ungleich b |
a < b | a ist kleiner als b |
a > b | a ist größer als b |
a <= b | a ist kleiner oder gleich b |
a >= b | a ist größer oder gleich b |
2 Arithmetische Operatoren
| Ausdruck | Bedeutung |
|---|---|
a + b | a wird zu b addiert |
a - b | b wird von a subtrahiert |
a / b | a wird durch b geteilt |
a // b | Ganzzahldivision von a durch b |
a % b | Rest von a durch b |
a * b | a wird mit b multipliziert |
a ** b | a hoch b (Potenz) |
3 Bitweise Operatoren
| Ausdruck | Bedeutung |
|---|---|
a & b | Bitweises AND |
a | b | Bitweises OR |
a ^ b | Bitweises XOR |
~a | Bitweises NOT (Eins-Komplement) |
a << b | Bitweise Linksverschiebung |
a >> b | Bitweise Rechtsverschiebung |
4 Logische Operatoren
| Ausdruck | Bedeutung |
|---|---|
a and b | Beide sind wahr (AND) |
a or b | Einer ist wahr (OR) |
not a | a ist falsch (NOT) |
5 Zusammengesetzte Zuweisungsoperatoren
| Ausdruck | Bedeutung |
|---|---|
a += b | Wert addieren und zuweisen (a = a + b) |
a -= b | Wert subtrahieren und zuweisen (a = a - b) |
a /= b | Wert teilen und zuweisen (a = a / b) |
a //= b | Ganzzahldivision und zuweisen (a = a // b) |
a *= b | Wert multiplizieren und zuweisen (a = a * b) |
a **= b | Potenzieren und zuweisen (a = a ** b) |
a |= b | Bitweises ODER und zuweisen (a = a | b) |
a &= b | Bitweises UND und zuweisen (a = a & b) |
a ^= b | Bitweises XOR und zuweisen (a = a ^ b) |
a <<= b | Linksverschiebung und zuweisen (a = a << b) |
a >>= b | Rechtsverschiebung und zuweisen (a = a >> b) |
6 Walrus Operator := (Assignment Expression)
Der Walrus Operator (:=) wurde in Python 3.8 eingeführt und ermöglicht Zuweisungen innerhalb von Ausdrücken.
Syntax:
(variable := expression)
6.1 Grundlegendes Beispiel
# Ohne Walrus Operator
data = input("Enter text: ")
if len(data) > 5:
print(f"Text is {len(data)} characters long")
# Mit Walrus Operator (kompakter)
if (n := len(input("Enter text: "))) > 5:
print(f"Text is {n} characters long")
6.2 In while-Schleifen
# Ohne Walrus Operator
line = input("Enter command: ")
while line != "quit":
print(f"You entered: {line}")
line = input("Enter command: ")
# Mit Walrus Operator (DRY - Don't Repeat Yourself)
while (line := input("Enter command: ")) != "quit":
print(f"You entered: {line}")
6.3 In List Comprehensions
# Liste von Quadraten, nur wenn Quadrat > 10
numbers = [1, 2, 3, 4, 5, 6]
# Ohne Walrus Operator (berechnet x**2 zweimal)
squares = [x**2 for x in numbers if x**2 > 10]
# Mit Walrus Operator (berechnet nur einmal)
squares = [square for x in numbers if (square := x**2) > 10]
# [16, 25, 36]
6.4 Bei regulären Ausdrücken
import re
# Ohne Walrus Operator
text = "Email: user@example.com"
match = re.search(r'[\w\.-]+@[\w\.-]+', text)
if match:
print(f"Found: {match.group()}")
# Mit Walrus Operator
if (match := re.search(r'[\w\.-]+@[\w\.-]+', text)):
print(f"Found: {match.group()}")
6.5 Wichtige Hinweise
Klammern erforderlich:
# ❌ Syntaxfehler
if n := 5 > 3:
pass
# ✅ Richtig
if (n := 5) > 3:
pass
Nicht in allen Kontexten erlaubt:
# ❌ Nicht als standalone statement
n := 5 # SyntaxError
# ✅ Normale Zuweisung verwenden
n = 5
Wann verwenden:
- Wenn ein Wert berechnet UND in einer Bedingung verwendet wird
- Bei while-Schleifen mit komplexen Bedingungen
- In List Comprehensions zur Vermeidung doppelter Berechnungen
Wann nicht verwenden:
- Wenn normale Zuweisung ausreicht
- Wenn es die Lesbarkeit verschlechtert