9. Top-Level-Komponenten

Der Python-Interpreter kann seine Eingabe aus verschiedenen Quellen beziehen: von einem Skript, das ihm als Standardeingabe oder als Programmargument übergeben wird, interaktiv eingegeben, aus einer Modulquelldatei usw. Dieses Kapitel beschreibt die in diesen Fällen verwendete Syntax.

9.1. Vollständige Python-Programme

Während eine Sprachspezifikation nicht vorschreiben muss, wie der Sprachinterpreter aufgerufen wird, ist es nützlich, eine Vorstellung von einem vollständigen Python-Programm zu haben. Ein vollständiges Python-Programm wird in einer minimal initialisierten Umgebung ausgeführt: Alle integrierten und Standardmodule sind verfügbar, aber keines wurde initialisiert, außer sys (verschiedene Systemdienste), builtins (integrierte Funktionen, Ausnahmen und None) und __main__. Letzteres wird verwendet, um den lokalen und 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 kann auch im interaktiven Modus aufgerufen werden; in diesem Fall liest und führt er kein vollständiges Programm aus, sondern liest und führt eine Anweisung (möglicherweise eine zusammengesetzte) nach der anderen aus. Die anfängliche Umgebung ist identisch mit der eines vollständigen Programms; jede Anweisung wird im Namensraum von __main__ ausgeführt.

Ein vollständiges Programm kann dem Interpreter in drei Formen übergeben werden: mit der Kommandozeilenoption -c string, als Datei, die als erstes Kommandozeilenargument übergeben wird, oder über die Standardeingabe. Wenn die Datei oder die Standardeingabe ein TTY-Gerät ist, wechselt der Interpreter in den interaktiven Modus; andernfalls führt er die Datei als vollständiges Programm aus.

9.2. Dateieingabe

Alle Eingaben von nicht-interaktiven Dateien haben das gleiche Format

file_input: (NEWLINE | statement)* ENDMARKER

Diese Syntax wird in den folgenden Situationen verwendet

  • beim Parsen eines vollständigen Python-Programms (aus einer Datei oder einem String);

  • beim Parsen eines Moduls;

  • beim Parsen eines Strings, der an die Funktion exec() übergeben wird;

9.3. Interaktive Eingabe

Die Eingabe im interaktiven Modus wird mit der folgenden Grammatik geparst

interactive_input: [stmt_list] NEWLINE | compound_stmt NEWLINE | ENDMARKER

Beachten Sie, dass auf eine (Top-Level) zusammengesetzte Anweisung im interaktiven Modus eine Leerzeile folgen muss; dies ist erforderlich, um dem Parser das Ende der Eingabe zu signalisieren.

9.4. Ausdruckseingabe

eval() wird für die Ausdruckseingabe verwendet. Sie ignoriert führende Leerzeichen. Das String-Argument für eval() muss die folgende Form haben

eval_input: expression_list NEWLINE* ENDMARKER