8.8。 トップレベルのコンポーネント
Pythonインタープリターは、標準入力またはプログラム引数として渡されたスクリプトから、インタラクティブに入力されたスクリプトから、モジュールソースファイルなどから、さまざまなソースから入力を取得できます。 この章では、これらの場合に使用される構文について説明します。
8.1。 完全なPythonプログラム
言語仕様では、言語インタープリターの呼び出し方法を規定する必要はありませんが、完全なPythonプログラムの概念があると便利です。 完全なPythonプログラムは、最小限に初期化された環境で実行されます。すべての組み込みモジュールと標準モジュールが使用可能ですが、 sys (さまざまなシステムサービス)、 __ builtin __ を除いて、初期化されたものはありません。 (組み込み関数、例外、およびNone
)および __ main __ 。 後者は、完全なプログラムを実行するためのローカルおよびグローバル名前空間を提供するために使用されます。
完全なPythonプログラムの構文は、次のセクションで説明するファイル入力の構文です。
インタプリタは、インタラクティブモードで呼び出すこともできます。 この場合、完全なプログラムを読み取って実行するのではなく、一度に1つのステートメント(場合によっては複合)を読み取って実行します。 初期環境は完全なプログラムの環境と同じです。 各ステートメントは、 __ main __ の名前空間で実行されます。
完全なプログラムは、 -c string コマンドラインオプションを使用するか、最初のコマンドライン引数として渡されるファイルとして、または標準入力として、3つの形式でインタープリターに渡すことができます。 ファイルまたは標準入力がttyデバイスの場合、インタプリタはインタラクティブモードに入ります。 それ以外の場合は、ファイルを完全なプログラムとして実行します。
8.2。 ファイル入力
非対話型ファイルから読み取られるすべての入力の形式は同じです。
file_input ::= (NEWLINE | statement)*
この構文は、次の状況で使用されます。
- 完全なPythonプログラムを(ファイルまたは文字列から)解析する場合。
- モジュールを解析するとき。
- exec ステートメントに渡された文字列を解析するとき。
8.3。 インタラクティブな入力
インタラクティブモードでの入力は、次の文法を使用して解析されます。
Interactive_input ::= [stmt_list] NEWLINE | compound_stmt NEWLINE
インタラクティブモードでは、(トップレベルの)複合ステートメントの後に空白行が続く必要があることに注意してください。 これは、パーサーが入力の終わりを検出するのに役立つために必要です。
8.4。 式入力
式の入力には2つの形式があります。 どちらも先頭の空白を無視します。 eval()の文字列引数は、次の形式である必要があります。
eval_input ::= expression_list NEWLINE*
input()によって読み取られる入力行は、次の形式である必要があります。
input_input ::= expression_list NEWLINE
注:解釈せずに「raw」入力行を読み取るには、ファイルオブジェクトの組み込み関数 raw_input()または readline()メソッドを使用できます。