Übersetzung auf Deutsch

Python Operator Priorität

Hallo, ambitionierte Python-Programmierer! Heute werden wir uns in ein Thema vertiefen, das am Anfang vielleicht etwas abschreckend erscheinen mag, aber ich verspreche euch, dass ihr es faszinierend finden werdet, sobald wir es aufbrechen. Wir sprechen über die Python-Operator-Priorität. Stellt euch vor, es wäre die "Hackordnung" der Operationen in Python. Lass uns gemeinsam auf diese aufregende Reise aufbrechen!

Python - Operator Precedence

Was ist Operator Priorität?

Bevor wir in die Python-spezifischen Details eintauchen, verstehen wir allgemein, was Operator-Priorität bedeutet. Stellt euch vor, ihr seid in einer geschäftigen Küche (bleibt bei mir, ich verspreche, dass diese Analogie einen Sinn macht). In dieser Küche sind verschiedene Köche für verschiedene Aufgaben verantwortlich. Einige schneiden Gemüse, andere braten und wieder andere servieren. Diese Aufgaben müssen in einer bestimmten Reihenfolge ausgeführt werden, um das perfekte Gericht zu kreieren. Diese Reihenfolge ist ähnlich wie die Operator-Priorität in der Programmierung.

In Python wird, wenn ihr eine Expression mit mehreren Operatoren schreibt, die Operator-Priorität bestimmt, in welcher Reihenfolge diese Operationen durchgeführt werden. Genau wie in unserer Küche-Analogie haben einige Operationen eine höhere Priorität als andere.

Sehen wir uns ein einfaches Beispiel an:

ergebnis = 5 + 3 * 2
print(ergebnis)

Was denkt ihr, wird das Ergebnis sein? Wenn ihr 11 erraten habt, habt ihr recht! Aber warum?

Hier kommt die Operator-Priorität ins Spiel. In Python (und den meisten Programmiersprachen) hat die Multiplikation eine höhere Priorität als die Addition. Die Expression wird daher so ausgewertet:

  1. Zuerst wird 3 * 2 berechnet, was zu 6 führt
  2. Dann wird 5 zu 6 addiert, was uns 11 gibt

Wenn wir diese Reihenfolge ändern möchten, würden wir Klammern verwenden, so:

ergebnis = (5 + 3) * 2
print(ergebnis)

Jetzt wäre das Ergebnis 16, weil die Klammern die höchste Priorität haben und die Addition vor der Multiplikation erfolgt.

Python Operator Prioritäts-Tabelle

Nun, da wir den Begriff verstanden haben, schauen wir uns die vollständige Tabelle der Operator-Priorität in Python an. Bedenkt, dass Operatoren oben in der Tabelle eine höhere Priorität haben als die darunter.

Priorität Operator Beschreibung
1 () Klammern
2 ** Exponentiation
3 +x, -x, ~x Unary plus, minus und bitweises NICHT
4 *, /, //, % Multiplikation, Division, Ganzzahldivision, Modulus
5 +, - Addition und Subtraktion
6 <<, >> Bitweiser Schiebeoperator
7 & Bitweises UND
8 ^ Bitweises XOR
9 | Bitweises ODER
10 ==, !=, >, >=, <, <=, is, is not, in, not in Vergleiche, Identität und Mitgliedschaftsoperatoren
11 not Logisches NICHT
12 and Logisches UND
13 or Logisches ODER

Macht euch keine Sorgen, wenn einige dieser Operatoren euch unbekannt erscheinen. Wir werden uns auf die häufigsten konzentrieren.

Python Operator Prioritäts-Beispiele

Lassen Sie uns einige Beispiele durchgehen, um zu sehen, wie diese Prioritäts-Tabelle im praktischen Einsatz funktioniert.

Beispiel 1: Arithmetische Operatoren

ergebnis = 10 + 5 * 2 - 3 ** 2
print(ergebnis)

Brechen wir dies Schritt für Schritt auf:

  1. 3 ** 2 = 9 (Exponentiation hat die höchste Priorität)
  2. 5 * 2 = 10 (Multiplikation kommt als nächstes)
  3. 10 + 10 - 9 = 11 (Addition und Subtraktion werden von links nach rechts durchgeführt)

Das endgültige Ergebnis ist also 11.

Beispiel 2: Vergleichs- und logische Operatoren

x = 5
y = 10
z = 15

ergebnis = x < y and y < z or x == z
print(ergebnis)

So wird dies ausgewertet:

  1. x < y ist Wahr
  2. y < z ist Wahr
  3. x == z ist Falsch
  4. Wahr und Wahr ist Wahr
  5. Wahr oder Falsch ist Wahr

Das endgültige Ergebnis ist also Wahr.

Beispiel 3: Verbinden von verschiedenen Typen von Operatoren

a = 2
b = 3
c = 4

ergebnis = a * b ** 2 + c > (a + b) * c and not a == b
print(ergebnis)

Brechen wir es auf:

  1. b ** 2 = 9 (Exponentiation zuerst)
  2. a * 9 = 18 (Multiplikation kommt nächst)
  3. 18 + c = 22 (Addition)
  4. (a + b) = 5 (Klammern haben die höchste Priorität)
  5. 5 * c = 20 (Multiplikation)
  6. 22 > 20 ist Wahr (Vergleich)
  7. a == b ist Falsch (Gleichheitsprüfung)
  8. not Falsch ist Wahr (Logisches NICHT)
  9. Wahr und Wahr ist Wahr (Logisches UND)

Das endgültige Ergebnis ist also Wahr.

Fazit

Das Verständnis der Operator-Priorität ist entscheidend für das Schreiben korrekter und effizienter Python-Code. Es hilft euch, vorherzusagen, wie eure Ausdrücke ausgewertet werden und vermeidet unerwartete Ergebnisse. Wenn ihr unsicher seid, verwendet einfach Klammern, um die Reihenfolge der Operationen explizit zu definieren. Es stellt nicht nur sicher, dass euer Code wie beabsichtigt funktioniert, sondern macht ihn auch für andere (und euren zukünftigen Selbst) lesbarer!

Während ihr weiter auf eurer Python-Reise geht, werdet ihr diese Prioritätsregeln immer vertrauter. Macht euch keine Sorgen, wenn es am Anfang überwältigend erscheinen mag – mit Übung wird es second nature. Programmier weiter, experimentiert weiter und vor allem, habt Spaß! Nach allem ist Programmierung wie Kochen – je mehr ihr übt, desto besser werden eure "Gerichte". Frohes Coding, zukünftige Python-Köche!

Credits: Image by storyset