Direkt zum Inhalt
HeimAnleitungenPython

Operatoren in Python

Dieses Tutorial behandelt die verschiedenen Arten von Operatoren in Python, das Überladen von Operatoren, den Vorrang und die Assoziativität.
Aktualisierte 11. Sept. 2024  · 9 Min. lesen

Genau wie in der Mathematik gibt es in Programmiersprachen wie Python Operatoren. Du kannst sie dir als extrem einfache Funktionen vorstellen, die die Grundlage der Informatik bilden. Dies sind die einfachsten Operationen, auf die ein Computerprogramm reduziert werden kann. Diese Kenntnisse sind für jeden angehenden Data Scientist oder Software Engineer unerlässlich.

In diesem Tutorium lernst du Folgendes

Wenn du mehr über die Grundlagen der Programmiersprache Python erfahren möchtest, solltest du dir unseren kostenlosen Kurs "Einführung in Python für Data Science " ansehen.

Artithmetische Operatoren

Du kennst sie wahrscheinlich schon, denn sie kommen aus der Grundmathematik.

Die arithmetischen Operatoren sind Addition (+), Subtraktion (-), Multiplikation (*), Division (/), Exponent (**), Bodenteilung (//) und Modulus (%). Die ersten vier sind ziemlich einfach: Addition, Subtraktion, Multiplikation und Division, mit denen du wahrscheinlich schon vertraut bist.

# Addition
print(5 + 2)

# Subtraction
print(5 - 2)

# Multiplication
print(5 * 2)

# Division
print(5 / 2)
7
3
10
2.5

Die anderen drei sind ein bisschen komplizierter. Der Exponent-Operator bedeutet "hochgezählt von". Zum Beispiel bedeutet 2 ** 3, dass 2 mit sich selbst multipliziert wird 3 mal, also ist 2 ** 3 das gleiche wie 2 * 2 * 2, was gleich 8 ist.

Die Bodenteilung ist dasselbe wie die normale Division, nur dass das Ergebnis immer nach unten abgerundet wird. In dem folgenden Beispiel wird 5 durch 2 geteilt, was 2,5 ergibt. Da es sich aber um die Bodenklasse handelt, wird 2,5 auf 2 abgerundet.

Der Modulus schließlich ist der Rest nach der Division. Im Fall von 5%2 passt die Zahl 2 nur zweimal in 5, was bedeutet, dass der Rest 1 ist.

# Exponent
print(5 ** 2)
# This is the same as 5 * 5

# Floor Division
print(5 // 2)

# Modulus
print(5 % 2)
25
2
1

In Python kann der Additionsoperator auch verwendet werden, um Zeichenketten zu verketten. Das bedeutet, dass sie z.B. zu einem einzigen String zusammengefügt werden:

firstName = "Théo"

introduction = "Hi, my name is " + firstName + "."

print(introduction)
Hi, my name is Théo.

Zuweisungsoperatoren

Wenn du etwas Programmiererfahrung hast, hast du sicherlich schon einmal Zuweisungsoperatoren verwendet. Sie weisen einer Variablen einen bestimmten Wert zu. Die meistgenutzte ist =. Um sie zu benutzen, gibst du einfach den Namen der Variablen, der du einen neuen Wert zuweisen möchtest, die = und den Wert ein, der zugewiesen werden soll. Wenn du zum Beispiel der Variablen balance den Wert 100 zuweisen möchtest, kannst du wie folgt vorgehen:

balance = 100
print(balance)
100

Wenn du den Wert von balance um 10 erhöhen möchtest, kannst du balance += 10 verwenden. Das ist das Äquivalent zu balance = balance + 10, aber es ist viel kürzer.

balance += 10
print(balance)
110

Das Gleiche gilt für -=, balance -= 10 ist dasselbe wie balance = balance - 10:

print(balance)
balance -= 10
print(balance)
110
100

Die anderen Zuweisungsoperatoren funktionieren auf genau dieselbe Weise. Diese sind:

  • *=
  • /=
  • **=
  • //=
  • %=

Vergleichsoperatoren

Du kannst Vergleichsoperatoren verwenden, um, du hast es erraten, die Werte von Variablen zu vergleichen. Sie geben immer einen booleschen Wert zurück, der entweder True oder False lautet. Es gibt sechs von ihnen:

  • Gleichberechtigt: ==
  • Nicht gleich: !=
  • Größer als: >
  • Weniger als: <
  • Größer als oder gleich: >=
  • Kleiner als oder gleich: <=

Hier sind einige Vergleichsbeispiele:

a = 3
b = 5

print(a == b) # Equal
print(a != b) # Not equal
print(a > b) # Greater than
print(a < b) # Less than
print(a >= b) # Greater than or equal to
print(a <= b) # Less than or equal to
False
True
False
True
False
True

== und != können auch verwendet werden, um Zeichenketten anstelle von Zahlen zu vergleichen. Die anderen Operatoren sind nicht mit Zeichenketten kompatibel, da eine Zeichenkette nicht wirklich größer als eine andere Zeichenkette sein kann.

print("Hello" == "World")
print("Python" != "R")
False
True

Logische Operatoren

Die kennst du vielleicht schon! In der Logik werden sie logische Konnektive genannt. Diese sind auch in der menschlichen Sprache weit verbreitet. Sie lauten: and, or und not.

and gibt nur True zurück, wenn beide Operanden (die beiden booleschen Objekte, die du vergleichst) True sind. Zum Beispiel:

print(True and True)
print(True and False)
print(False and False)
True
False
False

Um das Verhalten dieses logischen Operators zu verstehen, kannst du eine Wahrheitstabelle verwenden:

a b a und b
Wahr Wahr Wahr
Wahr Falsch Falsch
Falsch Wahr Falsch
Falsch Falsch Falsch

or wahr ist, wenn ein (oder mehrere) Operanden wahr sind.

print(True and True)
print(True and False)
True
False
a b a oder b
Wahr Wahr Wahr
Wahr Falsch Wahr
Falsch Wahr Wahr
Falsch Falsch Falsch

Beachte, dass diese auch mit mehr als zwei Operanden funktionieren, zum Beispiel:

print(True and True and True and True)
print(True and True and True and False)
print(False or False or False or False)
print(False or False or False or True)
True
False
False
True

not gibt das Gegenteil seines Operanden zurück, also True, wenn False angegeben ist und umgekehrt.

print(not True)
False
a nicht ein
Wahr Falsch
Falsch Wahr

Operator-Überladung

Erinnere dich daran, dass du vorhin gesehen hast, wie + verwendet werden kann, um Zahlen zu addieren, aber auch, um Zeichenketten zu verbinden oder zu verknüpfen. + funktioniert also unterschiedlich, je nachdem, für welche Art von Objekt du es verwendest. Aber das wird nicht immer der Fall sein. Manchmal unterstützt der Operator, mit dem du arbeitest, einfach nicht die Art von Objekt, für die du ihn verwenden möchtest.

Hier ist ein Beispiel. Angenommen, du hast zwei Dog Objekte, ozzy und filou. Diese gehören zu der Klasse Dog unten. Du kannst dir die Klasse als Entwurf dafür vorstellen, wie die Objekte aussehen und wie sie sich verhalten sollen. In diesem Fall haben die Dog Objekte einen Namen, ein Alter und eine Größe. Nachdem die Klasse definiert ist, kannst du Objekte instanziieren. Einer von ihnen ist Ozzy, 3 Jahre alt und 30 Zentimeter groß. Der andere ist Filou, er ist 5 Jahre alt und 65 Zentimeter groß.

Dieses Beispiel verwendet das Konzept der objektorientierten Programmierung. Wenn du mehr darüber erfahren möchtest, solltest du unser Tutorial über objektorientierte Programmierung in Python lesen

Angenommen, du möchtest beide Hunde mit dem Größer als vergleichen: >. Das wird nicht funktionieren. Du wirst die Fehlermeldung '>' not supported between instances of 'Dog' and 'Dog' erhalten. Das bedeutet, dass > nicht weiß, wie man Objekte der Klasse Dog vergleichen kann.

class Dog:

    def __init__(self, name, age, height):  
        self.name = name
        self.age = age
        self.height = height

ozzy = Dog("Ozzy", 3, 30)
filou = Dog("Filou", 5, 65)

print(filou > ozzy)
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-96-428069ab24cc> in <module>()
      9 filou = Dog("Filou", 5, 65)
     10
---> 11 print(filou > ozzy)


TypeError: '>' not supported between instances of 'Dog' and 'Dog'

Glücklicherweise kannst du mit der Operatorüberladung das Verhalten des Operators definieren, wenn er auf Dog Objekten aufgerufen wird. In diesem Fall muss eine Methode namens __gt__ definiert werden, die "größer als" bedeutet und zwei Argumente entgegennimmt. Da wir unsere Hunde anhand ihrer Größe vergleichen wollen, gibt die Methode self.height > other.height zurück.

class Dog:

    def __init__(self, name, age, height):  
        self.name = name
        self.age = age
        self.height = height

    def __gt__(self,other):
        return self.height > other.height

ozzy = Dog("Ozzy", 3, 30)
filou = Dog("Filou", 5, 65)

print(filou > ozzy)
print(ozzy > filou)
True
False

Vorrang

Wenn du viele Operatoren kombinierst, kann es verwirrend werden. Sieh dir das folgende Beispiel an:

a = 2
b = 3
c = 9

a ** b > 5 and c - a // b >= 9 or b ** 2 == c
True

Woher weißt du, welcher von ihnen zuerst ausgeführt werden wird? Wie solltest du eine Codezeile mit vielen dieser Symbole lesen? Wird es von links nach rechts ausgeführt oder gibt es eine bestimmte Reihenfolge?

Hier kommt der Vorrang ins Spiel. Python-Operatoren werden in einer ganz bestimmten Reihenfolge ausgeführt, und einige haben Vorrang vor anderen.

In der folgenden Tabelle siehst du den Vorrang der Operatoren in der Reihenfolge von oben nach unten. Diese Regeln gelten auch in der Mathematik, wo bestimmte Berechnungen in einer Formel vor anderen ausgeführt werden müssen.

Vorrang Betreiber Beschreibung
1 ** Exponent
2 *, /, %, // Multiplizieren, Dividieren, Modulo, Bodenteilung
3 +, - plus, minus
4 >, <, >=, <= comparison
5 ==, != Gleichstellung
6 = %= /= //= -= += *= **= Auftrag
7 und, oder, nicht logisch

Assoziativität

Du hast gesehen, dass Vorrang wichtig ist! Aber was ist mit denen, die auf der gleichen Prioritätsebene liegen, wie Multiplikation und Division? Werden sie zur gleichen Zeit ausgeführt? Nein. *, \, % und \\ werden von links nach rechts ausgeführt, während ** von rechts nach links ausgeführt wird. Das nennt man Assoziativität.

Sieh dir das folgende Beispiel an. In diesem Fall werden die Operatoren von links nach rechts ausgeführt, und die Ausgabe ist 3.

print(5 * 2 // 3)
3

Indem du Klammern hinzufügst, kannst du jedoch die Reihenfolge ändern, in der die Operatoren ausgeführt werden. Das ist die Assoziativität, die genauso funktioniert wie die Assoziativität in der Mathematik. Was auch immer zwischen den Klammern steht, wird zuerst berechnet. In diesem Fall wird zuerst die Bodenteilung durchgeführt, gefolgt von der Multiplikation.

print(5 * (2 // 3))

Fazit

Du weißt jetzt, was Operatoren sind, wie du sie verwenden solltest und wie sie funktionieren. Du hast auch etwas über Überladung, Vorrang und Assoziativität gelernt. Du bist auf dem besten Weg, ein Python-Meister zu werden! Wenn du noch mehr lernen willst, solltest du dir unseren Kurs Intermediate Python for Data Science ansehen.

Themen

Python-Kurse

Course

Introduction to Data Science in Python

4 hr
462.3K
Dive into data science using Python and learn how to effectively analyze and visualize your data. No coding experience or skills needed.
See DetailsRight Arrow
Start Course
Mehr anzeigenRight Arrow