2. Verwendung des Python-Interpreters¶
2.1. Aufrufen des Interpreters¶
Auf Rechnern, auf denen der Python-Interpreter verfügbar ist, ist er üblicherweise unter /usr/local/bin/python3.13 installiert. Wenn Sie /usr/local/bin in den Suchpfad Ihrer Unix-Shell aufnehmen, können Sie ihn durch Eingabe des Befehls
python3.13
in der Shell starten. [1] Da der Ort, an dem der Interpreter liegt, eine Installationsoption ist, sind auch andere Pfade möglich; fragen Sie Ihren lokalen Python-Guru oder Systemadministrator. (Ein beliebter alternativer Ort ist z. B. /usr/local/python.)
Auf Windows-Rechnern, auf denen Sie Python aus dem Microsoft Store installiert haben, ist der Befehl python3.13 vorhanden. Wenn Sie den py.exe Launcher installiert haben, können Sie den Befehl py nutzen. Siehe Excursus: Setting environment variables für weitere Möglichkeiten, Python zu starten.
Wenn Sie an der primären Eingabeaufforderung das Dateiende-Zeichen (Control-D unter Unix, Control-Z unter Windows) eingeben, beendet sich der Interpreter mit dem Statuscode 0. Falls das nicht funktioniert, können Sie den Interpreter mit dem Befehl quit() beenden.
Zu den Zeilenbearbeitungs-Funktionen des Interpreters gehören auf den meisten Systemen interaktives Bearbeiten, Befehlshistorie und Code-Vervollständigung. Am schnellsten prüfst du die Verfügbarkeit der Kommandozeilenbearbeitung, indem du am Python-Prompt ein Wort eintippst und dann die Pfeiltaste nach links (oder Control-b) drückst. Bewegt sich der Cursor, ist die Kommandozeilenbearbeitung verfügbar; eine Einführung in die Tasten findest du im Anhang Interaktive Eingabebearbeitung und Historienersetzung. Passiert scheinbar nichts oder erscheint eine Sequenz wie ^[[D oder ^B, ist die Kommandozeilenbearbeitung nicht verfügbar; du kannst dann nur die Rückschritttaste verwenden, um Zeichen aus der aktuellen Zeile zu entfernen.
Der Interpreter funktioniert ähnlich wie die Unix-Shell: Ist die Standardeingabe mit einem TTY-Gerät (Terminal) verbunden, liest und führt er Befehle interaktiv aus. Wird er hingegen mit einem Dateinamen als Argument oder einer Datei als Standardeingabe aufgerufen, liest und führt er ein Skript aus dieser Datei aus.
Eine zweite Möglichkeit, den Interpreter zu starten, ist python -c Befehl [arg] .... Dies führt die Anweisung(en) in Befehl aus, analog zur -c-Option der Shell. Da Python-Anweisungen häufig Leerzeichen oder andere Sonderzeichen der Shell enthalten, empfiehlt es sich in der Regel, Befehl vollständig in Anführungszeichen zu setzen.
Manche Python-Module sind auch als Skripte nützlich. Diese können über python -m Modul [arg] ... aufgerufen werden, was die Quelldatei für Modul so ausführt, als hättest du ihren vollständigen Namen auf der Kommandozeile angegeben.
Wenn eine Skriptdatei verwendet wird, ist es manchmal nützlich, das Skript auszuführen und danach in den interaktiven Modus zu wechseln. Dazu kannst du -i vor dem Skript übergeben.
Alle Kommandozeilen-Optionen sind in Command line and environment beschrieben.
2.1.1. Argumentübergabe¶
Sind dem Interpreter der Skriptname und die nachfolgenden Argumente bekannt, werden sie in eine Liste von Zeichenketten umgewandelt und der Variablen argv im Modul sys zugewiesen. Du kannst auf diese Liste zugreifen, indem du import sys ausführst. Die Länge der Liste beträgt mindestens eins. Werden weder ein Skript noch Argumente angegeben, ist sys.argv[0] eine leere Zeichenkette. Wird der Skriptname als '-' angegeben (was Standardeingabe bedeutet), wird sys.argv[0] auf '-' gesetzt. Wird -c Befehl verwendet, wird sys.argv[0] auf '-c' gesetzt. Wird -m Modul verwendet, wird sys.argv[0] auf den vollständigen Namen des gefundenen Moduls gesetzt. Optionen nach -c Befehl oder -m Modul werden nicht von der Optionenverarbeitung des Python-Interpreters verbraucht, sondern in sys.argv belassen, damit der Befehl oder das Modul sie verarbeiten kann.
2.1.2. Interaktiver Modus¶
Werden Befehle über ein TTY-Gerät (Terminal) gelesen, befindet sich der Interpreter im interaktiven Modus. In diesem Modus fordert er mit dem primären Prompt zur Eingabe des nächsten Befehls auf, gewöhnlich drei Größer-als-Zeichen (>>>). Für Fortsetzungszeilen fordert er mit dem sekundären Prompt auf, standardmäßig drei Punkte (...). Der Interpreter gibt eine Begrüßungsmeldung mit seiner Versionsnummer und einem Urheberrechtshinweis aus, bevor er den ersten Prompt anzeigt:
$ python3.13
Python 3.13 (default, April 4 2023, 09:25:04)
[GCC 10.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
Fortsetzungszeilen sind erforderlich, wenn du eine mehrzeilige Anweisung eingibst. Sieh dir als Beispiel diese if-Anweisung an:
>>> the_world_is_flat = True
>>> if the_world_is_flat:
... print("Be careful not to fall off!")
...
Be careful not to fall off!
Weitere Informationen zum interaktiven Modus findest du unter Interaktiver Modus.
2.2. Der Interpreter und seine Umgebung¶
2.2.1. Quelltext-Codierung¶
Standardmäßig werden Python-Quelldateien als UTF-8-codiert behandelt. In dieser Codierung können Zeichen der meisten Sprachen der Welt gleichzeitig in String-Literalen, Bezeichnern und Kommentaren verwendet werden. Die Standardbibliothek nutzt allerdings nur ASCII-Zeichen für Bezeichner, eine Konvention, der jeder übertragbare Code folgen sollte. Um all diese Zeichen korrekt anzuzeigen, muss dein Editor erkennen, dass die Datei in UTF-8 vorliegt, und eine Schriftart verwenden, die alle Zeichen in der Datei unterstützt.
Um eine andere als die Standardcodierung anzugeben, sollte eine spezielle Kommentarzeile als erste Zeile der Datei eingefügt werden. Die Syntax sieht wie folgt aus:
# -*- coding: encoding -*-
wobei encoding eine der gültigen, von Python unterstützten codecs ist.
Um beispielsweise anzugeben, dass die Windows-1252-Codierung verwendet wird, sollte die erste Zeile deiner Quelltext-Datei wie folgt aussehen:
# -*- coding: cp1252 -*-
Eine Ausnahme von der Regel für die erste Zeile gilt, wenn der Quelltext mit einer UNIX-„Shebang“-Zeile beginnt. In diesem Fall sollte die Codierungsdeklaration als zweite Zeile der Datei eingefügt werden. Zum Beispiel:
#!/usr/bin/env python3
# -*- coding: cp1252 -*-
Fußnoten