16. Anhang¶
16.1. Interaktiver Modus¶
Es gibt zwei Varianten der interaktiven REPL. Der klassische einfache Interpreter wird auf allen Plattformen mit minimalen Möglichkeiten zur Zeilensteuerung unterstützt.
On Windows, or Unix-like systems with curses support,
a new interactive shell is used by default since Python 3.13.
This one supports color, multiline editing, history browsing, and
paste mode. To disable color, see Controlling color for
details. Function keys provide some additional functionality.
F1 enters the interactive help browser pydoc.
F2 allows for browsing command-line history with neither output nor the
>>> and … prompts. F3 enters „paste mode“, which
makes pasting larger blocks of code easier. Press F3 to return to
the regular prompt.
Bei Verwendung der neuen interaktiven Shell beendest du diese durch Eingabe von exit oder quit. Das Hinzufügen von Aufrufklammern nach diesen Befehlen ist nicht erforderlich.
Wenn die neue interaktive Shell nicht gewünscht ist, kann sie über die Umgebungsvariable PYTHON_BASIC_REPL deaktiviert werden.
16.1.1. Fehlerbehandlung¶
Wenn ein Fehler auftritt, gibt der Interpreter eine Fehlermeldung und einen Stacktrace aus. Im interaktiven Modus kehrt er anschließend zum primären Prompt zurück; stammte die Eingabe aus einer Datei, beendet er sich nach der Ausgabe des Stacktrace mit einem Exit-Status ungleich null. (Ausnahmen, die durch eine except-Klausel in einer try-Anweisung behandelt werden, sind in diesem Kontext keine Fehler.) Einige Fehler sind ausnahmslos fatal und führen zu einem Beenden mit einem Exit-Status ungleich null; dies gilt für interne Inkonsistenzen und einige Fälle von Speicherbrauch.Alle Fehlermeldungen werden in den Standard-Fehlerstrom geschrieben, die normale Ausgabe der ausgeführten Befehle wird in die Standardausgabe geschrieben.
Die Eingabe des Unterbrechungszeichens (normalerweise Control-C oder Delete) am primären oder sekundären Prompt bricht die Eingabe ab und kehrt zum primären Prompt zurück. [1] Das Auslösen einer Unterbrechung, während ein Befehl ausgeführt wird, löst die Ausnahme KeyboardInterrupt aus, die durch eine try-Anweisung behandelt werden kann.
16.1.2. Ausführbare Python-Skripte¶
Auf BSD-ähnlichen Unix-Systemen können Python-Skripte direkt ausführbar gemacht werden, genau wie Shell-Skripte, indem man die Zeile
#!/usr/bin/env python3
(unter der Annahme, dass sich der Interpreter im PATH des Benutzers befindet) an den Anfang des Skripts setzt und der Datei Rechte zur Ausführung gibt. Die Zeichen #! müssen die ersten beiden Zeichen der Datei sein. Auf einigen Plattformen muss diese erste Zeile mit einem Unix-Zeilenende ('\\n') und nicht mit einem Windows-Zeilenende ('\\r\\n') enden. Beachte, dass das Rautezeichen '#' in Python verwendet wird, um einen Kommentar zu beginnen.
Das Skript kann mithilfe des Befehls chmod ausführbar gemacht werden.
$ chmod +x myscript.py
Auf Windows-Systemen gibt es kein Konzept eines "Ausführungsmodus". Der Python-Installer verknüpft .py-Dateien automatisch mit python.exe, sodass ein Doppelklick auf eine Python-Datei diese als Skript ausführt. Die Dateiendung kann auch .pyw sein; in diesem Fall wird das normalerweise erscheinende Konsolenfenster unterdrückt.
16.1.3. Die interaktive Startdatei¶
Wenn du Python interaktiv nutzt, ist es oft praktisch, bei jedem Start des Interpreters einige Standardbefehle ausführen zu lassen. Du kannst dies erreichen, indem du eine Umgebungsvariable namens PYTHONSTARTUP auf den Namen einer Datei setzt, die deine Startbefehle enthält. Dies ähnelt der .profile-Funktion von Unix-Shells.
Diese Datei wird nur in interaktiven Sitzungen gelesen, nicht wenn Python Befehle aus einem Skript liest und nicht, wenn /dev/tty als explizite Quelle für Befehle angegeben wird (was sich ansonsten wie eine interaktive Sitzung verhält). Sie wird im selben Namensraum ausgeführt, in dem interaktive Befehle ausgeführt werden, sodass darin definierte oder importierte Objekte ohne Pfadangabe in der interaktiven Sitzung verwendet werden können. Du kannst in dieser Datei auch die Prompts sys.ps1 und sys.ps2 ändern.
Wenn du eine zusätzliche Startdatei aus dem aktuellen Verzeichnis lesen möchtest, kannst du dies in der globalen Startdatei mit Code wie if os.path.isfile('.pythonrc.py'): exec(open('.pythonrc.py').read()) programmieren. Wenn du die Startdatei in einem Skript verwenden möchtest, musst du dies explizit im Skript tun:
import os
filename = os.environ.get('PYTHONSTARTUP')
if filename and os.path.isfile(filename):
with open(filename) as fobj:
startup_file = fobj.read()
exec(startup_file)
16.1.4. Die Anpassungsmodule¶
Python bietet zwei Hooks zur Anpassung: sitecustomize und usercustomize. Um zu sehen, wie das funktioniert, musst du zuerst den Pfad deines benutzerbezogenen site-packages-Verzeichnisses finden. Starte Python und führe diesen Code aus:
>>> import site
>>> site.getusersitepackages()
'/home/user/.local/lib/python3.x/site-packages'
Jetzt kannst du in diesem Verzeichnis eine Datei namens usercustomize.py erstellen und beliebig füllen. Sie wirkt sich auf jeden Aufruf von Python aus, es sei denn, es wird mit der Option -s gestartet, um den automatischen Import zu deaktivieren.
sitecustomize funktioniert auf die gleiche Weise, wird aber typischerweise von einem Administrator des Computers im globalen site-packages-Verzeichnis erstellt und vor usercustomize importiert. Siehe die Dokumentation des site-Moduls für weitere Details.
Fußnoten