BSchnelleinstieg Python-REPL

In diesem Buch werden diverse Beispiele direkt auf der Konsole ausprobiert. Der Grund besteht vor allem darin, dass Python eine interaktive Kommandozeilenapplikation als REPL (Read-Eval-Print-Loop) bietet, die wir nachfolgend kurz kennenlernen wollen.

Der Python-Kommandozeileninterpreter wird unter Windows mit dem Kommando python und unter macOS mit python3 gestartet und erlaubt einen interaktiven Arbeitsstil und das Ausführen kleinerer Sourcecode-Schnipsel. Wie gerade erwähnt, spricht man dabei auch von REPL (Read-Eval-Print-Loop). Dadurch wird es möglich, etwas Python-Sourcecode zu schreiben und Dinge schnell auszuprobieren, ohne dafür die IDE starten und ein Projekt anlegen zu müssen. Über das Ausmaß des Gewinns lässt sich sicherlich streiten. Überaus praktisch ist es für erste Experimente und für Prototyping.

Einführendes Beispiel

Starten wir die REPL und probieren einige Aktionen und Berechnungen aus. Dabei dient mal wieder eine Abwandlung eines Hello-World-Beispiels als Startpunkt:

$ python3

Python 3.11.2 (v3.11.2:878ead1ac1, Feb 7 2023, 10:02:41) [Clang 13.0.0 (clang-1300.0.29.30)] on darwin

Type "help", "copyright", "credits" or "license" for more information.

>>>

>>> print("Hello Python")

Hello Python

Danach addieren wir zwei Zahlen:

>>> 2 + 2

4

Auch die Definition eigener Funktionen ist wie folgt möglich:

>>> def add(m, n):

... return m + n

...

Bei der Eingabe erkennt der Python-Kommandozeileninterpreter praktischerweise, wenn Anweisungen nicht vollständig sind und noch weitere Eingaben in einer Folgezeile benötigt werden. Dies wird durch die drei Punkte am Anfang einer Zeile ausgedrückt. Um dann nach dem return die Definition der Funktion und Eingabe zu beenden, müssen Sie dann zweimal Return drücken.

Bei Eingaben in der REPL müssen Sie pingelig auf die Einrückung achten. Denn hat man sich dabei einmal vertan, lässt sich der Fehler oft nur mühsam korrigieren. Daher empfehle ich abgesehen von kleinen Experimenten fast immer den Einsatz einer IDE wie die unter https://www.jetbrains.com/de-de/pycharm/ frei verfügbare IDE PyCharm.

Nach Abschluss der Definition kann man eine solche Funktion dann wie erwartet aufrufen:

>>> add(7, 2)

9

Komplexere Aktionen

Es sind aber auch etwas komplexere Aktionen möglich, etwa eine Liste und einen Lambda-Ausdruck zu definieren und dann eine Filterung vorzunehmen:

>>> names = ["Tim", "Jim", "Tom", "James", "Mike", "John"]

>>> startsWithJ = lambda str: str.lower().startswith("j")

>>> filtered_names = list(filter(startsWithJ, names))

>>> print(filtered_names)

['Jim', 'James', 'John']

Selbstverständlich kann man auch if-Abfragen ausführen:

>>> if names.index("Mike") >= 0:

... print("Found Mike")

... else:

... print("No Mike found")

...

Found Mike

Wenn Sie allerdings auch so krumme Finger wie der Autor haben, dann ist schnell mal ein Tippfehler gemacht, der sich in der REPL leider nur schwierig bzw. umständlich korrigieren lässt.

Weitere Kommandos und Möglichkeiten

Außerdem bietet der Python-Kommandozeileninterpreter eine Historie der Befehle, was nützlich sein kann, um ein vorheriges Kommando wiederholt auszuführen. Folgende Tastaturkürzel erleichtern das Editieren und Navigieren:

Wie eben gesehen ist die Definition von Listen möglich – das geht auch für Mengen und Dictionaries und sogar recht komfortabel:

>>> numbers = [1, 2, 3, 4, 5, 6, 7]

>>> names = {"Tim", "Mike", "Max"}

>>> name_to_age = {"Tim" : 41, "Mike" : 42}

>>>

>>> print(name_to_age)

{'Tim': 41, 'Mike': 42}

Natürlich kann man dann diverse Aktionen darauf ausführen:

>>> numbers += name_to_age.values()

>>> numbers

[1, 2, 3, 4, 5, 6, 7, 41, 42]

>>>

>>> names.update({"Peter", "Jim"})

>>> names

{'Mike', 'Max', 'Peter', 'Tim', 'Jim'}

Beenden des Python-Kommandozeileninterpreters

Schließlich kann man den Python-Kommandozeileninterpreter mit exit() beenden.