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