Bislang haben wir eine Reihe von Datenstrukturen in Python gesehen: strings und Listen. Jede von ihnen unterstützt mehrere Methoden, die Varianten von Funktionen sind.
Zum Beispiel ist eine Methode von Listen die reverse() Methode. Wie der Name schon andeutet, kehrt sie die Liste um (so wird aus dem ersten Element das letzte und umgekehrt). Man ruft eine Methode auf, in dem man ein Periodenzeichen (.) verwendet wie im Folgenden:
«objectName».«methodName»(«list of arguments, if any»)
Zum Vergleich, die Syntax, die wir bereits gesehen haben, um Funktionen aufzurufen, war
«functionName»(«list of arguments, if any»)
Hier ist ein Beispiel für das Aufrufen der Umkehr-Methode in einer Liste.
Ein Beispiel einer Methode, die ein Argument benötigt, ist str.startswith:
Viele Methoden
Unten erwähnen wir die häufigsten Methoden für die Zeichenketten- und Listenklassen. Diese erledigen zumeist Aufgaben, die du selbst zu schreiben in der Lage sein solltest, aber das Verwenden von Standardmethoden hat den Vorteil, dass es deinen Code leichter für andere zu lesen und zu bearbeiten macht.
Listen
Diese Methoden verändern die Liste nicht:
list.index(X): findeXin der Liste. Genauer gesagt, gibt diese Methode einiaus, daslist[i]==Xergibt, wenn man alle Elemente durchsucht. Das niedrigst möglicheiwird ausgegeben. WennXnicht in der Liste vorhanden ist, wirdValueErrorausgelöst.X in listgibtTrueaus, wennXein Element der Liste ist, sonstFalse. Diese Methode zu verwenden kann helfen, einenValueErrorzu vermeiden. (Achtung:inist ein Operator, keine Methode.)
list.count(X): gibt aus, wie oftXin der Liste vorkommt
Diese Methoden verändern die Liste:
list.append(X)fügtXam Ende vonlisteinlist.insert(i, X)fügtXan der Stelleieinlist.extend(L)fügt eine ListeLan das Ende anlist.remove(X)entfernt das erste Auftreten vonXlist.pop(i)löscht & gibt Elementlist[i]zurück, währendlist.pop()das letzte Element löscht & zurückgibt.del list[i]löscht dasite Element vonlist(Achtung: dies ist ein "del Statement", keine Methode)list.reverse()kehrt die Liste umlist.sort()sortiert die Liste
Alle Methoden oben außer pop geben None aus. Einige dieser Funktionen können außerdem auch mit leicht veränderten Argumenten aufgerufen werden; für mehr Details siehe den Abschnitt über Listenmethoden in der Python Dokumentation. Listen unterstützen auch komplexe Unterbereiche, die „slices“ genannt werden, und die es uns erlauben, ganze Unterlisten einzufügen oder zu löschen, ähnlich wie in der string[x:y:z] Schreibweise, die wir in vorherigen Lektionen gesehen haben.
Zeichenketten
Genau wie bei Listen, kannst du in,index und count mit Zeichenketten verwenden. Sie sind sogar noch wirkungsvoller, da sie auch mit Unterketten funktionieren und nicht nur individuelle Zeichen finden:
S in Tist ein bool, der angibt, ob KetteSeine Unterkette von KetteTist.S.index(T)findet den ersten Index vonS, woTeine Unterkette istS.count(T)gibt die Zahl von sich nicht überschneidenden Ausprägungen vonTan als Unterkette vonS
Hier sind einige der allgemein hilfreichsten str Methoden:
- Groß- und Kleinschreibung:
capitalize, lower, upper, islower, isupper - Zeichen:
isalpha, isdigit - Füllung:
center, ljust, rjust;striplöschen Füllzeichen - Unterketten:
endswith, startswith, find, replace - Parsing:
split, splitlines
Wir werden diese detaillierter einführen, sofern dies notwendig ist. Eine komplette, detaillierte Liste von Zeichenkettenmethoden findest du in der Python Dokumentation.
Strings sind unveränderlich. Wir erwähnten list.reverse(), welches eine Liste verändert, indem es sie umkehrt, aber es existiert keine str.reverse() Methode. Das ist so, weil Zeichenkettenobjekte nicht mehr verändert werden können, wenn sie einmal entworfen wurden. In Lektion 17 erklären wir dies etwas genauer.
Hier ist ein Beispiel einer Kettenmethode: S.replace(old, new) gibt eine modifizierte Version von S aus, bei der jedes Vorkommen von Unterkette old ersetzt wurde durch new. Dies ruft eine neue Kette hervor, ohne die alte zu verändern:
Für die nächste Übung sind die folgenden Methoden hilfreich:
str.replace, die wir gerade beschrieben haben- die Boolesche Methode
str.isalpha(), dieTrueergibt, wennstreine Kette (oder Zeichen) ist, die nur aus Buchstaben besteht - die Boolesche Methode
str.isdigit(), dieTrueergibt, wennstreine Kette (oder Zeichen) ist, die nur aus Zahlen besteht str.upper(), die eine Version vonstrausgibt, die zu Großbuchstaben konvertiert wurde.
![]() | Der Rest dieser Lektion ist ein bisschen technisch und kein nötiges Wissen für die restlichen Lektionen. |
Mehr über Objekte
Während du mehr über Python lernst, wirst du mehreren Klassen als nur strings und Listen begegnen.
Andere, die du wohl nützlich finden wirst, sind file objects, sets, und dictionaries.
Sie haben alle viele nützliche Methoden. Du kannst Python nach allen Methoden eines gegebenen Objektes fragen,
indem du die dir-Funktion anwendest:
Die Eigenschaften eines Objekts anzuschauen wird introspection genannt. Alles in Python darf Methoden haben:
Einige der Einträge in dir sind eigentlich member variables statt Methoden, zum Beispiel ist int.denominator eine Zahl und keine Funktion. Technisch sind Funktionen Objekte in Python, so sind member-Funktionen ein Spezialfall von member-Variablen.
Du kannst Introspektion auch an Modulen betreiben. Falls du import math durchführst und dann dir(math) aufrufst, bekommst du eine Liste von allem im math-Modul, die Zahl pi und die Funktion sqrt inklusive.
Warum Objekte?
Warum haben wir Methoden wie S.index(T) anstatt eines einfachen Funktionsaufrufs wie index(S, T)? Warum haben wir eigentlich überhaupt object S und method str.index()?
Die wesentlichen Vorteile der Objekte werden klarer, wenn du anfängst mit komplizierteren und
unterschiedlicheren Typen von Daten zu programmieren. Jeder Typ vom Objekt (z.B. str class)
stellt die untergebrachten Basisdaten (z.B. eine Folge von Zeichen und ihre Länge)
und die Typen der Operationen dar, welche daran ausgeführt werden können (z.B. konvertieren zum Großbuchstaben oder einen substring erstellen).
Ein komplexeres Beispiel sind file objects:
sie repräsentieren den Namen eines zu öffnenden Files, deine aktuelle Position im File und Methoden zum Lesen und Schreiben.
Du kannst sogar deine eigenen Datentypen definieren!
Dieser allgemeine Zugang wird "objektorientierte Programmierung" (OOP) genannt. Einige seiner Leistungen sind:
- organization: Auf alles vom
math-Modul kann mit dermath.«name»-Syntax zugegriffen werden; du sparst die Möglichkeit, existierende Variablennamen in deinem Programm zu überschreiben. - encapsulation:
So wie ein Programm mit mehreren strings oder mehreren Files zur gleichen Zeit arbeiten kann, kannst du mit vielen verschiedenen Kopien (instances) des durch irgendeine andere Klasse definierten Datentypen arbeiten. - re-use: Sobald du einen Datentypen (wie
str) oder eine Library von Methoden (wiemath) definiert hast, kannst du ihn wieder und wieder benutzen (re-use) oder ihn anderen Leuten vom benutzen geben. - debugging:
Wir sahen von früher, wie das Schreiben einer Funktion den Gebrauch vieler Kopien gleichen Codes vermeidet,
was debugging erleichtert. Alle Funktionen verknüpft mit einem Datentypen an einer einzigen Stelle (die Klassendefinition) zu schreiben hat den gleichen Effekt. - relations between classes: Python weiß, dass die
index-Methode eine Sache für einen string und was anderes für eine Liste bedeuten kann. Ebenso kann Python nicht nur Files auf deinem Computer lesen und schreiben, sondern auch auf dem Internet. In beiden Fällen (Zeichen oder Listenfolgen und lokale oder ferne Files) können die verwandten Klassen durch das Konzept der Vererbung (inheritance) in einer gleichförmigen Weise behandelt werden.
Im Rest der CS Kreise werden wir nur Objekte und Methoden benutzen; du kannst später mehr über
das Erstellen eigener Klassen lernen (siehe Ressourcen-Seite).
Die nächsten drei Lektionen können in beliebiger Reihenfolge durchgearbeitet werden und sie geben eine Vielfalt von Herausforderungen, die teilweise Themen von früheren Lektionen beinhalten.




