9. Komponenten der obersten Ebene

Der Python-Interpreter kann seine Eingabe aus verschiedenen Quellen beziehen: aus einem Skript, das ihm als Standardeingabe oder als Programmargument übergeben wird, interaktiv eingetippt, aus einer Modulquelldatei und so weiter. Dieses Kapitel gibt die Syntax an, die in diesen Fällen gilt.

9.1. Vollständige Python-Programme

Eine Sprachspezifikation muss zwar nicht vorschreiben, wie der Interpreter der Sprache aufgerufen wird, es ist aber nützlich, einen Begriff vom vollständigen Python-Programm zu haben. Ein vollständiges Python-Programm wird in einer minimal initialisierten Umgebung ausgeführt: Alle integrierten Module und alle Module der Standardbibliothek sind verfügbar, keines ist aber initialisiert, außer sys (verschiedene Systemdienste), builtins (integrierte Funktionen, Ausnahmen und None) und __main__. Letzteres dient dazu, den lokalen und den globalen Namensraum für die Ausführung des vollständigen Programms bereitzustellen.

Die Syntax für ein vollständiges Python-Programm ist die für die Dateieingabe, die im nächsten Abschnitt beschrieben wird.

Der Interpreter lässt sich auch im interaktiven Modus aufrufen. In diesem Fall liest und führt er kein vollständiges Programm aus, sondern liest und führt eine Anweisung nach der anderen aus (möglicherweise eine zusammengesetzte). Die Ausgangsumgebung ist dieselbe wie bei einem vollständigen Programm, jede Anweisung wird im Namensraum von __main__ ausgeführt.

Ein vollständiges Programm lässt sich dem Interpreter in drei Formen übergeben: mit der Befehlszeilenoption -c string, als Datei, die als erstes Befehlszeilenargument übergeben wird, oder als Standardeingabe. Ist die Datei oder die Standardeingabe ein Terminalgerät, wechselt der Interpreter in den interaktiven Modus, andernfalls führt er die Datei als vollständiges Programm aus.

9.2. Dateieingabe

Alle Eingaben, die aus nicht interaktiven Dateien gelesen werden, haben dieselbe Form:

file_input: (NEWLINE | statement)* ENDMARKER

Diese Syntax gilt in den folgenden Fällen:

  • beim Parsen eines vollständigen Python-Programms (aus einer Datei oder aus einer Zeichenkette),

  • beim Parsen eines Moduls,

  • beim Parsen einer Zeichenkette, die der Funktion exec() übergeben wird,

9.3. Interaktive Eingabe

Eingaben im interaktiven Modus werden mit der folgenden Grammatik geparst:

interactive_input: [stmt_list] NEWLINE | compound_stmt NEWLINE | ENDMARKER

Beachte, dass einer zusammengesetzten Anweisung (der obersten Ebene) im interaktiven Modus eine leere Zeile folgen muss. Das wird gebraucht, damit der Parser das Ende der Eingabe erkennen kann.

9.4. Ausdruckseingabe

eval() dient der Ausdruckseingabe. Führender Leerraum wird dabei übergangen. Das Zeichenkettenargument von eval() muss die folgende Form haben:

eval_input: expression_list NEWLINE* ENDMARKER