Operatoren und Ausdrücke#
Die meisten Anweisungen (logische Zeilen), die Sie schreiben, enthalten Ausdrücke. Ein einfaches Beispiel für einen Ausdruck ist 2 + 3. Ein Ausdruck kann in Operatoren und Operanden zerlegt werden.
Operatoren sind Funktionalitäten, die etwas tun, und können durch Symbole wie + oder durch spezielle Schlüsselwörter dargestellt werden. Operatoren benötigen einige Daten, auf die sie operieren, und solche Daten werden Operanden genannt. In diesem Fall sind 2 und 3 die Operanden.
Operatoren#
Wir werden kurz einen Blick auf die Operatoren und ihre Verwendung werfen.
Beachten Sie, dass Sie die in den Beispielen gegebenen Ausdrücke interaktiv mit dem Interpreter auswerten können. Um zum Beispiel den Ausdruck 2 + 3 zu testen, verwenden Sie die Eingabeaufforderung des interaktiven Python-Interpreters:
>>> 2 + 3
5
>>> 3 * 5
15
>>>
Hier folgt ein schneller Überblick über die verfügbaren Operatoren:
+(Plus)Addiert zwei Objekte
3 + 5ergibt8.'a' + 'b'ergibt'ab'.
-(Minus)Gibt die Subtraktion einer Zahl von der anderen zurück; wenn der erste Operand fehlt, wird er als Null angenommen.
-5.2ergibt eine negative Zahl und50 - 24ergibt26.
*(Multiplikation)Gibt die Multiplikation der beiden Zahlen zurück oder liefert den String, der so oft wiederholt wird. -
2 * 3ergibt6.'la' * 3ergibt'lalala'.
**(Potenz, power)Gibt x hoch y zurück. (x{sup}y)
3 ** 4ergibt81(d. h. 3 * 3 * 3 * 3)
/(Division)Dividiert x durch y
13 / 3ergibt4.333333333333333
//(Division und Abrunden nach unten, divide and floor)Dividiert x durch y und rundet das Ergebnis nach unten auf den nächsten ganzzahligen Wert. Beachten Sie, dass Sie einen Float zurückbekommen, wenn einer der Werte ein Float ist.
13 // 3ergibt4-13 // 3ergibt-59 // 1.81ergibt4.0
%(Modulo)Gibt den Rest der Division zurück
13 % 3ergibt1. (3 ist in 13 4 mal enthalten, 3 x 4 ergibt 12, bleibt auf 1 Rest auf 13)25.5 % 2.25ergibt1.5.
Vergleichsoperatoren#
<(kleiner als)Gibt zurück, ob x kleiner als y ist. Alle Vergleichsoperatoren geben
TrueoderFalsezurück. Beachten Sie die Großschreibung dieser Namen.5 < 3ergibtFalse3 < 5ergibtTrue.Vergleiche können beliebig verknüpft werden:
3 < 5 < 7ergibt True.
>(größer als)Gibt zurück, ob x größer als y ist.
5 > 3ergibtTrue. Wenn beide Operanden Zahlen sind, werden sie zunächst in einen gemeinsamen Typ umgewandelt. Andernfalls ergibt es immer False.
<=(kleiner oder gleich)Gibt zurück, ob x kleiner oder gleich y ist
x = 3; y = 6; x <= yergibtTrue
>=(größer oder gleich)Gibt zurück, ob x größer oder gleich y ist
x = 4; y = 3; x >= 3ergibtTrue
==(gleich)Vergleicht, ob die Objekte gleich sind
x = 2; y = 2; x == yergibtTruex = 'str'; y = 'stR'; x == yergibtFalsex = 'str'; y = 'str'; x == yergibtTrue
!=(ungleich)Vergleicht, ob die Objekte ungleich sind
x = 2; y = 3; x != yergibtTruenot(boolesches NICHT)Wenn
xTrueist, ergibt esFalse.Wenn
xFalseist, ergibt esTrue.x = True; not xergibtFalse.
Boolsche Operatoren#
and(boolesches UND)x and yergibtFalse, wennxFalseist, sonst ergibt es die Auswertung vony.x = False; y = True; x and yergibtFalse, daxFalseist. In diesem Fall wertet Python y nicht aus, da es weiß, dass die linke Seite des ‘and’-AusdrucksFalseist, was bedeutet, dass der gesamte AusdruckFalsesein wird, egal wie der andere Wert lautet. Dies nennt man short-Circuit-Auswertung.
or(boolesches ODER)Wenn
xTrueist, ergibt esTrue, sonst ergibt es die Auswertung vony.x = True; y = False; x or yergibtTrue. -Short-Circuit-Auswertung gilt auch hier.
Bit-Operatoren#
<<(Linksverschiebung, left shift)Verschiebt die Bits der Zahl nach links um die angegebene Anzahl von Bits. (Jede Zahl wird im Speicher durch Bits dargestellt, d. h. 0 und 1.) -
2 << 2ergibt8.2wird in Bits als10dargestellt.Eine Linksverschiebung um 2 Bits ergibt 1000, was die Dezimalzahl 8 repräsentiert.
>>(Rechtsverschiebung, right shift)Verschiebt die Bits der Zahl nach rechts um die angegebene Anzahl von Bits.
11 >> 1ergibt5.11wird in Bits als1011dargestellt, was bei Rechtsverschiebung um 1 Bit101ergibt, also die Dezimalzahl5.
&(bitweises UND)Bitweises UND der Zahlen: Wenn beide Bits
1sind, ist das Ergebnis1. Andernfalls ist es0.5 & 3ergibt1(0101 & 0011ergibt0001)
|(bitweises ODER)Bitweises ODER der Zahlen: Wenn beide Bits
0sind, ist das Ergebnis0. Andernfalls ist es1.5 | 3ergibt7(0101 | 0011ergibt0111)
^(bitweises XOR (exclusives ODER))Bitweises XOR der Zahlen: Wenn beide Bits gleich sind, ist das Ergebnis 0. Andernfalls ist es 1.
5 ^ 3ergibt6(0101 ^ 0011ergibt0110)
~(bitweises Invertieren)Die bitweise Inversion von
xist-(x+1)~5ergibt-6. Mehr Details unter http://stackoverflow.com/a/11810203
Abkürzung für mathematische Operation und Zuweisung#
Es ist üblich, eine mathematische Operation auf einer Variablen auszuführen und dann das Ergebnis der Operation wieder der Variablen zuzuweisen; daher gibt es eine Abkürzung für solche Ausdrücke:
a = 2
a = a * 3
kann geschrieben werden als:
a = 2
a *= 3
Beachten Sie, dass var = var operation expression zu var operation= expression wird.
Auswertungsreihenfolge#
Wenn Sie einen Ausdruck wie 2 + 3 * 4 haben, wird dann zuerst die Addition oder die Multiplikation durchgeführt? Unsere Mathematik aus der Schule sagt uns, dass die Multiplikation zuerst erfolgen sollte (Punktrechung vor Strichrechnung). Das bedeutet, dass der Multiplikationsoperator eine höhere Priorität besitzt als der Additionsoperator.
Die folgende Tabelle zeigt die Prioritätstabelle für Python, von der niedrigsten Priorität (geringste Bindung) zur höchsten Priorität (stärkste Bindung). Das bedeutet, dass Python in einem gegebenen Ausdruck zuerst die Operatoren und Ausdrücke weiter unten in der Tabelle auswertet, bevor es die weiter oben in der Tabelle auswertet.
Die folgende Tabelle, entnommen aus dem Python-Referenzhandbuch, wird der Vollständigkeit halber bereitgestellt. Es ist weit besser, Klammern zu verwenden, um Operatoren und Operanden angemessen zu gruppieren, um die Priorität ausdrücklich festzulegen. Dies macht das Programm lesbarer. Siehe unten Ändern der Auswertungsreihenfolge für Details.
lambda: Lambda Expressionif - else: Conditional expressionor: Boolean ORand: Boolean ANDnot x: Boolean NOTin, not in, is, is not, <, <=, >, >=, !=, ==: Vergleiche, inklusive membership tests und identity tests|: Bitwise OR^: Bitwise XOR&: Bitwise AND<<, >>: Bit Shifts+, -: Addition und Subtraktion*, /, //, %: Multiplikation, Division, Ganzzahl-Division und Modulo (Rest)+x, -x, ~x: Positive, Negative, bitwise NOT**: Exponentiationx[index], x[index:index], x(arguments...), x.attribute: Subscription, slicing, call, attribute reference(expressions...), [expressions...], {key: value...}, {expressions...}: Binding or tuple display, list display, dictionary display, set display
Die Operatoren, die wir bisher noch nicht gesehen haben, werden in späteren Kapiteln erklärt.
Operatoren mit der gleichen Priorität werden in derselben Zeile der obigen Tabelle aufgeführt. Zum Beispiel haben + und - dieselbe Priorität.
Ändern der Auswertungsreihenfolge#
Um Ausdrücke lesbarer zu machen, können wir Klammern verwenden. Zum Beispiel ist 2 + (3 * 4) definitiv leichter zu verstehen als 2 + 3 * 4, das Kenntnisse über die Operatorprioritäten erfordert. Wie bei allem sollten Klammern vernünftig verwendet werden (nicht übertreiben) und nicht redundant sein, wie in (2 + (3 * 4)).
Es gibt einen weiteren Vorteil bei der Verwendung von Klammern – sie helfen uns, die Auswertungsreihenfolge zu ändern. Wenn Sie zum Beispiel möchten, dass die Addition vor der Multiplikation in einem Ausdruck ausgewertet wird, können Sie etwas wie (2 + 3) * 4 schreiben.
Assoziativität#
Operatoren werden normalerweise von links nach rechts ausgewertet. Das bedeutet, dass Operatoren mit derselben Priorität in einer von links nach rechts verlaufenden Weise behandelt werden. Zum Beispiel wird 2 + 3 + 4 als (2 + 3) + 4 ausgewertet.
Ausdrücke#
Beispiel expression_de.py
Quellcode
1länge = 5
2breite = 2
3
4fläche = länge * breite
5print('Die Fläche ist', fläche)
6print('Der Umfang ist', 2 * (länge + breite))
Die Zeilennummern sind nicht Bestandteil des Quellcodes
Ausgabe
Die Fläche ist 10
Der Umfang ist 14
Wie es funktioniert:
Die Länge und Breite des Rechtecks werden in Variablen mit denselben Namen gespeichert. Wir verwenden diese, um die Fläche und den Umfang des Rechtecks mit Hilfe von Ausdrücken zu berechnen. Wir speichern das Ergebnis des Ausdrucks länge * breite in der Variablen namens fläche und drucken ihn dann mit der print-Funktion aus. Im zweiten Fall verwenden wir den Wert des Ausdrucks 2 * (länge + breite) direkt in der Print-Funktion.
Beachten Sie auch, wie Python die Ausgabe „schön formatiert“. Obwohl wir keinen Abstand zwischen 'Die Fläche ist' und der Variablen fläche angegeben haben, fügt Python ihn für uns ein, sodass wir eine saubere, ordentliche Ausgabe bekommen und das Programm auf diese Weise viel lesbarer ist (da wir uns keine Gedanken über Abstände in den für die Ausgabe verwendeten Strings machen müssen). Dies ist ein Beispiel dafür, wie Python dem Programmierer das Leben erleichtert.
Zusammenfassung#
Wir haben gesehen, wie man Operatoren, Operanden und Ausdrücke verwendet – dies sind die grundlegenden Bausteine jedes Programms. Als Nächstes werden wir sehen, wie wir diese in unseren Programmen mittels Anweisungen verwenden.
