Python-Ope­ra­to­ren helfen Ihnen dabei, mit Werten (Operanden) zu arbeiten, diese zu verändern oder mit­ein­an­der zu ver­knüp­fen. Die Ope­ra­to­ren können bei­spiels­wei­se logisch oder arith­me­tisch sein.

Was sind Python-Ope­ra­to­ren und wie funk­tio­nie­ren sie?

Ein Operator ist ein Zeichen für eine Operation. Meist kommen Ope­ra­to­ren zum Einsatz, die mehrere Operanden ver­knüp­fen. Für ge­wöhn­lich wird dabei ein neuer Wert gebildet. Die Anwendung eines Operators auf einen einzelnen Operanden mo­di­fi­ziert diesen.

Das wohl ein­fachs­te Beispiel für Python-Ope­ra­to­ren ist die Ver­knüp­fung von zwei Zahlen durch den Additions-Operator, d. h. ein Plus­zei­chen zwischen den Zahlen. Python wertet den Ausdruck aus und gibt den ent­spre­chen­den Wert zurück:

1 + 1

Besonders an Python ist, dass als Ope­ra­to­ren neben Symbolen auch kurze Wörter wie „and“, „or“, „is“, „not“ oder „in“ zum Einsatz kommen. Die Kom­bi­na­ti­on von Ope­ra­to­ren und Operanden ergibt einen Ausdruck:

1 + 1 == 2

Welche Arten von Python-Ope­ra­to­ren gibt es?

Python kennt ver­schie­de­ne Klassen von Ope­ra­to­ren. Sie operieren auf un­ter­schied­li­chen Typen von Operanden und liefern Resultate eines be­stimm­ten Typs. Die ver­schie­de­nen Arten von Python-Ope­ra­to­ren in der Übersicht:

Klassen von Python-Ope­ra­to­ren Erklärung Operanden Resultat Ope­ra­to­ren im Überblick
Arith­me­ti­sche Ope­ra­to­ren Ver­knüp­fen zwei Zahlen zu einer neuen Zahl Zahlen Zahl +, -, *, /, //, %, **, @
Ver­gleichs­ope­ra­to­ren Ver­glei­chen zwei Ausdrücke mit­ein­an­der Ausdrücke Bool <, >, ==, !=, <=, >=
Logische Ope­ra­to­ren Ver­knüp­fen Ausdrücke im boole­schen Kontext Ausdrücke zuletzt eva­lu­ier­ter Ausdruck / Bool and, or, not
Bitweise Ope­ra­to­ren Ma­ni­pu­lie­ren Ganz­zah­len als Bi­när­fol­gen Zahlen Zahl <<, >>, &, |, ^, ~
Zu­wei­sungs-Ope­ra­to­ren Weisen Wert einem Namen zu Lvalue, Rvalue – / eva­lu­ier­ter Ausdruck =, :=, +=, -=, *=, etc.
Iden­ti­täts-Ope­ra­to­ren Fest­stel­len, ob zwei Namen auf dasselbe Objekt verweisen Objekte Bool is, is not
Kon­di­tio­na­ler Operator Gibt in Ab­hän­gig­keit einer Kondition einen von zwei Werten zurück Ausdruck, Bedingung, Al­ter­na­ti­ve Ausdruck / Al­ter­na­ti­ve ... if ... else ...
Mengen-Ope­ra­to­ren Ver­knüp­fen zwei Mengen / Ver­glei­chen Mengen Mengen Menge / Bool &, |, ^, -, <, >, <=, >=
Mit­glied­schaft-Ope­ra­to­ren Testen, ob ein Iterable ein be­stimm­tes Objekt enthält Objekt, Iterable Bool in, not in
Kon­ka­te­na­ti­ons-Operator Verkettet Sequenzen Strings / Listen / Tupel String / Liste / Tupel +
Index- und Slice-Ope­ra­to­ren Liefern ein oder mehrere Elemente eines Iterable Iterable, Index / Slice String / Liste / Tupel [], [::]

Neben dem Typ der Operanden und des Rück­ga­be­werts werden Ope­ra­to­ren nach deren „Arität“ klas­si­fi­ziert. Die Arität eines Operators hat nichts mit „arisch“ zu tun. Vielmehr drückt der Begriff aus, wie viele Operanden ein Operator verknüpft. In den meisten Fällen kommen „binäre“ Ope­ra­to­ren mit zwei Operanden zum Einsatz. Ferner gibt es einige „unäre“ Ope­ra­to­ren mit nur einem Operanden sowie einen „ternären“ Operator, der drei Operanden verknüpft:

Operator-Arität Anzahl an Operanden Beispiel
Unär Ein Operand not single_value
Binär Zwei Operanden left_operand + right_operand
Ternär Drei Operanden some_value if condition else other_value

Operator-Prä­zen­denz beachten

Grund­le­gend für den Einsatz der Python-Ope­ra­to­ren ist zudem ein Ver­ständ­nis der Operator-Prä­zen­denz. Das Konzept ist als „Punkt- vor Strich­rech­nung“ aus der Arith­me­tik bekannt. Zur Er­in­ne­rung: Der Ausdruck 3 * 8 + 2 wird in­ter­pre­tiert als (3 * 8) + 2 und nicht als 3 * (8 + 2). Wie für das Plus- und das Mal-Zeichen gibt es Prä­zen­denz-Regeln für alle Python-Ope­ra­to­ren. Hier ein Beispiel für einen Ausdruck mit den logischen Ope­ra­to­ren „and“, „or“ und „not“:

if is_user and is_user_logged_in or is_admin and not login_blocked:
    ...

Ohne die Prä­zen­denz-Regeln für die in­vol­vier­ten Python-Ope­ra­to­ren zu kennen, lässt sich nicht ent­schei­den, wie die einzelnen Terme zu­sam­men­ge­hö­ren. Werden mehrere Ope­ra­to­ren in einem Ausdruck verwendet, wird es schnell kom­pli­ziert. Generell ist es besser, sich nicht auf ein perfektes Ver­ständ­nis im­pli­zi­ter Regeln zu verlassen. Statt­des­sen setzt man explizite Klammern ein, um zu ver­deut­li­chen, wie die Terme eines Ausdrucks zu­sam­men­ge­hö­ren:

if (is_user and is_user_logged_in) or (is_admin and not login_blocked):
    ...

Zum Vergleich dieselben Terme anders gruppiert – die Aussage der beiden Ausdrücke ist un­ter­schied­lich:

if (is_user and is_user_logged_in or is_admin) and not login_blocked:
    ...

Über­la­de­ne Ope­ra­to­ren, Dunder-Methods und Python-Operator-Funk­tio­nen

Manche Python-Ope­ra­to­ren kommen für mehr als eine Operation zum Einsatz. Ein pro­mi­nen­tes Beispiel ist das Plus­zei­chen; es fungiert als Additions-Operator für Zahlen und gleich­zei­tig als Kon­ka­te­na­ti­ons-Operator zum Verketten von Sequenzen wie Strings und Listen. Wir addieren zwei Zahlen mit dem Additions-Operator:

8 + 3 == 11

Mit demselben Operator kon­ka­te­nie­ren wir zwei Strings:

"Walter" + "White" == "WalterWhite"

Auch Listen kon­ka­te­nie­ren wir mit dem Plus-Operator:

['Jack', 'Jim'] + ['John'] == ['Jack', 'Jim', 'John']

Die Mehr­fach­be­le­gung des Plus­zei­chens als Operator spiegelt ein ver­brei­te­tes Konzept in der In­for­ma­tik wider. Man spricht von „über­la­de­nen Ope­ra­to­ren“, wenn ein und derselbe Operator je nach Datentyp der Operanden ver­schie­de­ne Ope­ra­tio­nen ausführt.

Wie funk­tio­nie­ren über­la­de­ne Ope­ra­to­ren in Python? Unter der Haube wird ein Operator samt Operanden als Aufruf einer kor­re­spon­die­ren­den Funktion in­ter­pre­tiert. Spe­zi­fisch wird eine so­ge­nann­te Dunder-Methode des ersten Operanden auf­ge­ru­fen, die den bzw. die weiteren Operanden als Argumente erhält. „Dunder“ steht dabei für „double un­ders­core“, also „doppelte Un­ter­stri­che“. So kor­re­spon­diert der Plus-Operator zur Dunder-Methode __add__(). Objekte, die eine __add__()-Methode im­ple­men­tie­ren, lassen sich mit dem Plus-Operator ver­knüp­fen. Dabei ist dem Objekt selbst über­las­sen, was genau die Ver­knüp­fung kon­sti­tu­iert.

Neben den Dunder-Methoden enthält das operator-Modul Funk­tio­nen, die die Funk­tio­na­li­tät der Python-Ope­ra­to­ren kapseln. So ruft „operator.add(a, b)“ die Dunder-Methode a.__add__(b) auf, was dem Ausdruck a + b ent­spricht. Wir führen im weiteren Verlauf des Artikels die Operator-Funktion für jeden Operator soweit vorhanden auf. Der Name der Operator-Funktion kor­re­spon­diert zum Namen der ent­spre­chen­den Dunder-Methode. Nutzen Sie diese als Referenz zum Im­ple­men­tie­ren eigener Operator-Funk­tio­na­li­tät:

Python-Operator Operator-Funktion Dunder-Methode
a + b operator.add(a, b) a.__add__(b)

Ope­ra­to­ren nutzen die so­ge­nann­te Infix-Notation, die den Operator zwischen den Operanden einsetzt. Dem­ge­gen­über kommt beim funk­tio­na­len Stil die Prefix-Notation zum Einsatz. Beide Schreib­wei­sen sind äqui­va­lent:

Notation Ver­wen­dung Beispiel
Infix Ope­ra­to­ren a + b
Prefix Funk­tio­nen + a b / add(a, b)

Be­trach­ten wir ein Beispiel. Wir de­fi­nie­ren zwei Zahlen und addieren diese jeweils mit dem Operator, der Operator-Funktion und der kor­re­spon­die­ren­den Dunder-Methode:

import operator
a = 42
b = 69
assert a + b == operator.add(a, b) == a.__add__(b)

Auch kom­ple­xe­re Ausdrücke lassen sich mit Operator-Funk­tio­nen schreiben. Hier die Kom­bi­na­ti­on der Python-Additions- und Gleich­heits-Ope­ra­to­ren in Prefix-Notation:

import operator
assert 'Py' + 'thon' == 'Python'
assert operator.eq(operator.add('Py', 'thon'), 'Python')

Python-Ope­ra­to­ren im Überblick

Wir gehen nun auf elf ver­schie­de­ne Klassen von Python-Ope­ra­to­ren ein.

Arith­me­ti­sche Ope­ra­to­ren

Pythons arith­me­ti­sche Ope­ra­to­ren operieren auf Zahlen und erzeugen dabei eine neue Zahl. Mit Ausnahme des unären Plus bzw. Minus handelt es sich durchweg um binäre Ope­ra­to­ren. Hier dar­ge­stellt als Übersicht:

Python-Operator Bedeutung Operator-Funktion Beispiel
+ Addition / unäres Plus add(a, b) / pos(a) 5 + 3 == 8 / +8 == 4 + 4
- Sub­trak­ti­on / unäres Minus sub(a, b) / neg(a) 7 - 2 == 5 / -4 == 2 - 6
* Mul­ti­pli­ka­ti­on mul(a, b) 2 * 3 == 6
/ „Echte“ Division truediv(a, b) 8 / 2 == 4.0, 7 / 2 == 3.5
// Integer-Division zur nächst­klei­ne­ren Ganzzahl floordiv(a, b) 8 // 2 == 4, 7 // 2 == 3
% Modulus: Rest­be­trag der Integer-Division mod(a, b) 8 % 2 == 0, 7 % 2 == 1
** Ex­po­nen­ta­ti­on pow(a, b) 2 ** 3 == 8, 10 ** -1 == 0.1
@ Matrix-Mul­ti­pli­ka­ti­on matmul(a, b)

Die Modulus-Operation wird stan­dard­mä­ßig ein­ge­setzt, um zu ermitteln, ob eine Zahl gerade ist. Denn eine gerade Zahl geteilt durch zwei hat den Rest null. Wir de­fi­nie­ren eine ent­spre­chen­de Python-Funktion mit dem Modulus-Operator:

def is_even(number):
    return number % 2 == 0
# test
assert is_even(8) and not is_even(7)

Die Matrix-Mul­ti­pli­ka­ti­on erfordert den Einsatz eines Pakets wie NumPy.

Python-Ver­gleichs­ope­ra­to­ren

Die Python-Ver­gleichs­ope­ra­to­ren treffen eine Aussage darüber, wie sich zwei Elemente un­ter­ein­an­der ordnen lassen. Sie liefern ein boole­sches Resultat und kommen ins­be­son­de­re für Sor­tier­al­go­rith­men zum Einsatz:

Python-Operator Bedeutung Operator-Funktion Beispiel
< Kleiner als lt(a, b) 3 < 1, 'a' < 'z'
> Größer als gt(a, b) 4 > 2, 'z' > 'a'
== Gleich eq(a, b) 'a' == 'a'
!= Ungleich ne(a, b) 1 != 2, 'Jim' != 'Jack'
<= Kleiner gleich le(a, b) 9 <= 10, 10 <= 10
>= Größer gleich ge(a, b) 11 >= 10, 10 >= 10

Logische Ope­ra­to­ren

Pythons logische and- und or-Ope­ra­to­ren ver­knüp­fen mehrere Operanden der boole­schen Logik folgend. Als Ergebnis liefern beide Ope­ra­to­ren das jeweils zuletzt eva­lu­ier­te Objekt zurück. Python‘s logischer not-Operator in­ter­pre­tiert ein Objekt im boole­schen Kontext und negiert dessen Wahr­heits­wert:

Python-Operator Bedeutung Operator-Funktion Beispiel
and Logisches UND keine direkte Ent­spre­chung True and False == False, 'name' and ... == ...
or Logisches ODER keine direkte Ent­spre­chung False or True == True, a = '' or 'Default'; assert a == 'Default'
not Ver­nei­nung not_(a) not True == False

Es ist nützlich, sich den Effekt der logischen Ope­ra­tio­nen an Wahr­heits­ta­bel­len zu ver­an­schau­li­chen. Hier dar­ge­stellt das logische UND:

and True False
True True False
False False False

Sowie das logische ODER:

or True False
True True True
False True False

Die Operanden der boole­schen Python-Ope­ra­to­ren sind kei­nes­falls auf boolesche Variablen be­schränkt. Vielmehr lässt sich jedes Python-Objekt im boole­schen Kontext in­ter­pre­tie­ren. Die folgenden Objekte eva­lu­ie­ren im boole­schen Kontext zu False und werden daher als „falsy“ be­zeich­net:

Objekt Er­läu­te­rung
False, None Kon­stan­ten, die der De­fi­ni­ti­on nach False sind
0, 0.0, Decimal(0), Fraction(0, 1), etc. Zahl, die null re­prä­sen­tiert
'', (), [], {}, set(), range(0), etc. Leere Sequenz oder Kol­lek­ti­on

Bitweise Ope­ra­to­ren

Pythons bitweise Ope­ra­to­ren operieren auf Ganz­zah­len, die als Bitfolgen in­ter­pre­tiert werden. Mit Ausnahme des bitweisen NOT-Operators handelt es sich durch­ge­hend um binäre Ope­ra­to­ren:

Python-Operator Bedeutung Operator-Funktion Beispiel
<< Bitfolge nach links schieben lshift(a, b) 5 << 3 == 5 * 2 ** 3
>> Bitfolge nach rechts schieben rshift(a, b) 1 >> 1 == 0, 8 >> 1 == 4
& Zwei Bitfolgen per AND ver­knüp­fen and_(a, b) ``
Zwei Bitfolgen per OR ver­knüp­fen or_(a, b) ``
^ Zwei Bitfolgen per XOR ver­knüp­fen xor(a, b) ``
~ Bitfolge mit NOT in­ver­tie­ren invert(a) ``

Die bitweisen Ope­ra­to­ren eignen sich für op­ti­mier­te ma­the­ma­ti­sche Ope­ra­tio­nen. So ent­spricht der Links-Shift einer Mul­ti­pli­ka­ti­on mit einer Zweier-Potenz:

Ausdruck 23 = 8 22 = 4 21 = 2 20 = 1 Dezimal
b = 6 0 1 1 0 6
b << 1 1 1 0 0 12
b >> 1 0 0 1 1 3

Zum Ver­an­schau­li­chen der bitweisen AND-, OR- und NOT-Ope­ra­tio­nen kon­stru­ie­ren wir eine Tabelle der einzelnen Bits. Die Ope­ra­tio­nen werden mit Hilfe einer Bitmaske auf eine Zahl in Bi­när­dar­stel­lung angewandt:

Ausdruck 23 = 8 22 = 4 21 = 2 20 = 1 Dezimal
bits = 6 0 1 1 0 6
mask = 5 0 1 0 1 5
bits & mask 0 1 0 0 4
bits | mask 0 1 1 1 7
bits ^ mask 0 0 1 1 3

Pythons bitweiser NOT-Operator in­ver­tiert eine Bitfolge. Dabei wird aus jeder 1 eine 0 und umgekehrt. Ferner wird das Vor­zei­chen der Zahl umgekehrt:

Ausdruck 23 = 8 22 = 4 21 = 2 20 = 1 Dezimal
b = 6 0 1 1 0 6
~ b 1 0 0 1 -7

Zu­wei­sungs-Ope­ra­to­ren

Zu­wei­sun­gen zählen zu den grund­le­gen­den An­wei­sun­gen der meisten Pro­gram­mier­spra­chen. Die Python-Zu­wei­sungs-Ope­ra­to­ren binden einen Wert an einen Va­ria­blen­na­men. Neben der Zu­wei­sungs-Anweisung gibt es den neueren „Walross“-Operator, der eine Zuweisung innerhalb eines Ausdrucks er­mög­licht. Ferner existiert eine Reihe er­wei­ter­ter Zu­wei­sungs-An­wei­sun­gen, die eine Zuweisung mit einer weiteren Operation kom­bi­nie­ren:

Python-Operator Bedeutung Operator-Funktion Beispiel
= Zu­wei­sungs-Anweisung keine direkte Ent­spre­chung name = 'Walther'
:= Zu­wei­sungs-Ausdruck („Walross“-Operator) keine direkte Ent­spre­chung [ half for x in range(10) if (half := x / 2) < 5 ]
+= Er­wei­ter­te Additions-Zuweisung iadd(a, b) x = 1; x += 4; assert x == 5

Python kennt er­wei­ter­te Zu­wei­sungs-Ope­ra­to­ren für die arith­me­ti­schen und bitweisen Ope­ra­tio­nen. Wir führen diese hier nicht einzeln auf, sondern zeigen lediglich das generelle Muster am Beispiel der er­wei­ter­ten Kon­ka­te­na­ti­ons-Zuweisung. Zunächst dar­ge­stellt ein Code, der einem exis­tie­ren­den String einen weiteren Teil anfügt:

name = 'Walther'
name = name + 'White'
assert name == 'WaltherWhite'

Ein äqui­va­len­tes Beispiel mit Pythons er­wei­ter­tem Kon­ka­te­na­ti­ons-Operator „+=“ – es wird dasselbe Ergebnis erzielt, aber der Code ist knapper und aus­sa­ge­kräf­ti­ger:

name  = 'Walther'
name += 'White'
assert name == 'WaltherWhite'

Iden­ti­täts-Ope­ra­to­ren

Der Python-is-Operator testet, ob zwei Variablen auf dasselbe Objekt im Speicher verweisen. Die Objekt-Identität steht im Un­ter­schied zur Objekt-Gleich­heit, welche durch den Python Ver­gleichs­ope­ra­tor „==“ getestet wird. Das „is“ in Python ent­spricht in etwa Ja­va­Scripts strengem Gleich­heits­ope­ra­tor „===“. Python kennt ferner einen negierten Iden­ti­täts-Test mit dem „is not“-Operator:

Python-Operator Bedeutung Operator-Funktion Beispiel
is Iden­ti­täts-Test is_(a, b) a = 42; b = a; assert a is b
is not Negierter Iden­ti­täts-Test is_not(a, b) assert [42] is not [42]

Schauen wir uns ein paar Beispiele an. Wir erzeugen eine Referenz auf ein Objekt im Speicher. Später erzeugen wir eine weitere Referenz als Alias. Beide Variablen zeigen auf dasselbe Objekt im Speicher, der is-Operator liefert „True“:

# assign value to name
a = [42]
# reference existing object
b = a
# if this holds
assert a is b
# so will this
assert a == b

Hier erzeugen wir zwei Re­fe­ren­zen auf von­ein­an­der un­ab­hän­gi­ge Objekte im Speicher. Obschon die Objekte gleich sind, sind sie distinkt. Dem­entspre­chend liefert der is-Operator „False“:

# assign the same value to different names
a = [42]
b = [42]
# `a`, `b` are two different objects
assert a is not b
# that contain the same value
assert a == b

Kon­di­tio­na­ler Operator

Bei Pythons kon­di­tio­na­lem Operator handelt es sich um einen weiteren Nutzen der if-else-Schlüs­sel­wor­te. Der kon­di­tio­na­le Operator wird gerne ein­ge­setzt, um in Zu­wei­sun­gen zwischen zwei möglichen Werten zu un­ter­schei­den. Da der kon­di­tio­na­le Operator eine Bedingung und zwei Ausdrücke verknüpft, ist er auch als ternärer Operator bekannt.

Python-Operator Bedeutung Operator-Funktion Beispiel
... if ... else ... Kon­di­tio­na­ler Ausdruck keine direkte Ent­spre­chung name = 'Jim' if age == 42 else 'Jack'

Be­trach­ten wir zunächst ein Beispiel unter Nutzung der if-else-Anweisung in Python. Der folgende Code legt Celsius oder Fah­ren­heit als Einheit für eine Tem­pe­ra­tur­mes­sung in Ab­hän­gig­keit vom gewählten Mess­sys­tem fest:

if system == 'metric':
    unit = 'C'
else:
    unit = 'F'

Unter Nutzung des kon­di­tio­na­len Operators lässt sich der Code zu einer einzelnen Zuweisung ver­ein­fa­chen:

unit = 'C' if system == 'metric' else 'F'

Python-Mengen-Ope­ra­to­ren

Neben Strings, Tupeln, Listen und Dic­tio­n­a­ries un­ter­stützt Python stan­dard­mä­ßig Mengen als zu­sam­men­ge­setz­ten Datentyp. Für die üblichen Mengen-Ope­ra­tio­nen sind über­la­de­ne Ope­ra­to­ren definiert:

Python-Operator Bedeutung Operator-Funktion Beispiel
& Ver­ei­ni­gung von zwei Mengen bilden and_(a, b) {'a', 'b'} & {'a', 'c'} == {'a'}
Schnitt­men­ge von zwei Mengen bilden or_(a, b) {'a', 'b'} {'a', 'c'} == {'a', 'c', 'b'}
^ Sym­me­tri­sche Differenz von zwei Mengen bilden xor(a, b) {'a', 'b'} ^ {'a', 'c'} == {'c', 'b'}
- Differenz von zwei Mengen bilden sub(a, b) {'a', 'b'} - {'a'} == {'b'}
> Testen, ob Menge eine echte Übermenge ist gt(a, b) assert {'a', 'b'} > {'a'}
>= Testen, ob Menge eine Übermenge ist ge(a, b) assert {'a'} >= {'a'}
< Testen, ob Menge eine echte Un­ter­men­ge ist lt(a, b) assert {'a'} < {'a', 'b'}
<= Testen, ob Menge eine Un­ter­men­ge ist le(a, b) assert {'a'} <= {'a'}

Python-Mit­glied­schaft-Ope­ra­to­ren

Die Python-Mit­glied­schaft-Ope­ra­to­ren „in“ und „not in“ liefern eine Aussage darüber, ob ein Objekt in einer Kol­lek­ti­on enthalten ist.

Python-Operator Bedeutung Operator-Funktion Beispiel
in Testet, ob ein Objekt in einem Iterable enthalten ist contains(a, b) 'y' in 'Python'
not in Negierung des in-Operators not contains(a, b) 'x' not in 'Python'

Die Mit­glied­schaft-Ope­ra­to­ren funk­tio­nie­ren mit Iterables und nutzen eine Gleich­heits­prü­fung, um zu ermitteln, ob das Ziel­ob­jekt in der Kol­lek­ti­on enthalten ist:

'Py' in 'Python'
'Px' not in 'Python'
'Jack' in ['Jim', 'Jack']

Unter Einsatz des in-Operators spart man sich, Code der folgenden Form zu schreiben:

def my_in(target, collection):
    for element in collection:
        if element == target:
            return True
    return False
# test
word = 'Python'
letter = 'y'
assert (my_in(letter, word)) == (letter in word)

Kon­ka­te­na­ti­ons-Operator

In Python dient der Kon­ka­te­na­ti­ons-Operator dazu, Sequenzen desselben Typs zu verketten. Als Operator-Symbol kommt das Plus­zei­chen zum Einsatz.

Python-Operator Bedeutung Operator-Funktion Beispiel
+ Verkettet zwei Sequenzen add(a, b) ['Jim'] + ['Jack', 'John']

Schauen wir uns ein paar Beispiele an. Wir verketten zwei Strings, zwei Listen und zwei Tupel:

assert "Walter" + "White" == 'WalterWhite'
assert ['a', 'b'] + ['c'] == ['a', 'b', 'c']
assert ('q', 'r') + ('s', 't') == ('q', 'r', 's', 't')

Python findet Ver­wen­dung als Internet-Pro­gram­mier­spra­che. In diesem Zu­sam­men­hang kommt der Kon­ka­te­na­ti­ons-Operator zum Einsatz, um HTML-Tags zu­sam­men­zu­set­zen:

site_title = 'Welcome'
print('<h1>' + site_title + '</h1>')

Beim Vergleich Python vs. PHP un­ter­schei­den sich die Kon­ka­te­na­ti­ons-Ope­ra­to­ren der beiden Sprachen. Denn PHP verwendet den Punkt „.“ als Symbol. Dasselbe Beispiel dar­ge­stellt in PHP:

$siteTitle = 'Welcome';
echo '<h1>' . $siteTitle . '</h1>';

Index- und Slice-Ope­ra­to­ren

Der Python-Index-Operator dient zum Ex­tra­hie­ren eines be­stimm­ten Elements einer Kol­lek­ti­on. Mit dem Slice-Operator lässt sich eine Un­ter­se­quenz ex­tra­hie­ren.

Python-Operator Bedeutung Operator-Funktion Beispiel
iterable[index] Liefert das unter dem Index be­find­li­che Element eines Iterable getitem(iterable, index) 'Python'[1] == 'y'
sequence[start:stop:step] Liefert ein Slice einer Sequenz getitem(iterable, slice(start, stop, step)) 'Python'[0:1] == 'Py', 'Python'[0:-1:2] == 'Pto'

Pythons Index- und Slice-Ope­ra­to­ren greifen intern auf die Dunder-Methode __getitem__() zurück. Diese wird entweder mit einem nu­me­ri­schen Index oder einem Slice-Objekt auf­ge­ru­fen:

names = ['Jim', 'Jack', 'John']
names[0] == names.__getitem__(0)
names[0:2] == names.__getitem__(slice(0, 2))

Der Slice-Operator ist praktisch, denn er erlaubt das Ex­tra­hie­ren einer Un­ter­se­quenz ohne Einsatz einer Python-For-Loop oder Python-While-Loop. Damit ersparen sich Pro­gram­mie­ren­de, Code der folgenden Form zu schreiben:

word = 'Python'
start, stop, step = 0, 5, 2
index, substring = start, ''
while index in range(start, stop, step):
    substring += word[index]
    index += step
# test
assert substring == word[start:stop:step]
Zum Hauptmenü