EMZETT.
Login

Strings

Kurz: Ein Datentyp für Text — eine Folge von Zeichen, die in den meisten Sprachen als Referenztyp behandelt wird, auch wenn sie sich in der täglichen Nutzung oft wie ein einfacher Wert anfühlt.

Genauer: In vielen modernen Sprachen sind Strings unveränderlich (immutable) — jede scheinbare “Änderung” (z. B. Großbuchstaben umwandeln) erzeugt intern tatsächlich einen komplett neuen String, statt den bestehenden zu verändern. Das macht Strings sicher im gleichzeitigen Zugriff durch mehrere Threads, kann aber bei sehr vielen aufeinanderfolgenden Änderungen (Verkettungen) ineffizient werden.

Im Detail

text = "hallo"
grossgeschrieben = text.upper()
print(text)              # immer noch "hallo" - das Original bleibt unverändert!
print(grossgeschrieben)  # "HALLO" - ein NEUER String wurde erzeugt

Die Unveränderlichkeit von Strings ist eine bewusste Design-Entscheidung, keine technische Einschränkung: Weil ein String sich nach seiner Erzeugung nie mehr ändert, können mehrere Teile eines Programms (oder mehrere Threads) denselben String sicher gemeinsam nutzen, ohne dass einer den anderen versehentlich beeinflusst — es gibt schlicht keine Möglichkeit, dass jemand “unter der Hand” den Inhalt verändert, während jemand anderes ihn gerade liest.

Ein String besteht intern aus einer Folge einzelner Zeichen, die über einen Index angesprochen werden können (meist beginnend bei 0):

text = "Emzett"
text[0]     # "E"
text[-1]    # "t" (letztes Zeichen, in vielen Sprachen mit negativem Index möglich)
len(text)   # 6 - die Länge des Strings

Wichtig bei internationalem Text: Nicht jedes “sichtbare Zeichen” entspricht zwingend genau einer Speichereinheit — manche Zeichen (Emojis, bestimmte Akzent-Kombinationen) werden intern aus mehreren sogenannten Code-Units zusammengesetzt, was Länge-Berechnungen und Index-Zugriffe bei solchen Zeichen in manchen Sprachen zu überraschenden Ergebnissen führen kann. Für die meisten alltäglichen lateinischen Texte spielt das keine Rolle, wird aber relevant, sobald Emojis oder bestimmte nicht-lateinische Schriftsysteme im Spiel sind.

Siehe auch: String Concatenation, Special Characters, Non-primitive Types