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 ]-

[1] Unter Unix wird der Python-3.x-Interpreter standardmäßig nicht
    unter dem Namen "python" installiert, damit er nicht mit einer
    gleichzeitig installierten Python-2.x-Datei kollidiert.
