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.
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.
# Additionprint(5+2)# Subtractionprint(5-2)# Multiplicationprint(5*2)# Divisionprint(5/2)Bereitgestellt von
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.
# Exponentprint(5**2)# This is the same as 5 * 5# Floor Divisionprint(5//2)# Modulusprint(5%2)Bereitgestellt von
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)Bereitgestellt von
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:
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.
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:
a =3
b =5print(a == b)# Equalprint(a != b)# Not equalprint(a > b)# Greater thanprint(a < b)# Less thanprint(a >= b)# Greater than or equal toprint(a <= b)# Less than or equal toBereitgestellt von
== 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.
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(TrueandTrue)print(TrueandFalse)print(FalseandFalse)Bereitgestellt von
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.
classDog: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)Bereitgestellt von
---------------------------------------------------------------------------
TypeError Traceback(most recent call last)<ipython-input-96-428069ab24cc>in<module>()9 filou =Dog("Filou",5,65)10--->11print(filou > ozzy)TypeError:'>' not supported between instances of'Dog' and 'Dog'Bereitgestellt von
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.
classDog: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)Bereitgestellt von
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.
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.
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.
Mach dich mit Python-Datenstrukturen vertraut: Lerne mehr über Datentypen und primitive sowie nicht-primitive Datenstrukturen wie Strings, Listen, Stapel usw.
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.Die anderen drei sind ein bisschen komplizierter. Der Exponent-Operator bedeutet "hochgezählt von". Zum Beispiel bedeutet
2 ** 3, dass2mit sich selbst multipliziert wird3mal, also ist2 ** 3das gleiche wie2 * 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%2passt die Zahl 2 nur zweimal in 5, was bedeutet, dass der Rest 1 ist.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:
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 Variablenbalanceden Wert 100 zuweisen möchtest, kannst du wie folgt vorgehen:Wenn du den Wert von
balanceum 10 erhöhen möchtest, kannst dubalance += 10verwenden. Das ist das Äquivalent zubalance = balance + 10, aber es ist viel kürzer.Das Gleiche gilt für
-=,balance -= 10ist dasselbe wiebalance = balance - 10: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
TrueoderFalselautet. Es gibt sechs von ihnen:==!=><>=<=Hier sind einige Vergleichsbeispiele:
==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.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,orundnot.andgibt nur True zurück, wenn beide Operanden (die beiden booleschen Objekte, die du vergleichst) True sind. Zum Beispiel:Um das Verhalten dieses logischen Operators zu verstehen, kannst du eine Wahrheitstabelle verwenden:
orwahr ist, wenn ein (oder mehrere) Operanden wahr sind.Beachte, dass diese auch mit mehr als zwei Operanden funktionieren, zum Beispiel:
notgibt das Gegenteil seines Operanden zurück, alsoTrue, wennFalseangegeben ist und umgekehrt.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
DogObjekte,ozzyundfilou. Diese gehören zu der KlasseDogunten. Du kannst dir die Klasse als Entwurf dafür vorstellen, wie die Objekte aussehen und wie sie sich verhalten sollen. In diesem Fall haben dieDogObjekte 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 KlasseDogvergleichen kann.Glücklicherweise kannst du mit der Operatorüberladung das Verhalten des Operators definieren, wenn er auf
DogObjekten 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 Methodeself.height > other.heightzurück.Vorrang
Wenn du viele Operatoren kombinierst, kann es verwirrend werden. Sieh dir das folgende Beispiel an:
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.
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.
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.
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.