9. Komponen tingkat atas

Interpreter Python dapat memperoleh masukan dari sejumlah sumber: dari skrip yang diteruskan sebagai masukan standar atau sebagai argumen program, diketikkan secara interaktif, dari berkas sumber modul, dll. Bab ini memberikan sintaks yang digunakan dalam kasus-kasus tersebut.

9.1. Program Python lengkap

Meskipun spesifikasi bahasa tidak perlu menentukan bagaimana interpreter bahasa digunakan, penting untuk memiliki gagasan tentang program Python yang lengkap. Program Python lengkap dioperasikan dalam lingkungan yang diinisialisasi minimal: semua modul bawaan dan standar tersedia, tetapi tidak ada yang diinisialisasi, kecuali untuk sys (berbagai layanan sistem), builtins (fungsi bawaan, pengecualian dan None) dan __main__. Yang terakhir digunakan untuk menyediakan namespace lokal dan global untuk eksekusi program lengkap.

Sintaksis untuk program Python lengkap adalah untuk masukan berkas, dijelaskan pada bagian selanjutnya.

Interpreter juga dapat dipanggil dalam mode interaktif; dalam hal ini, ia tidak membaca dan menjalankan program yang lengkap tetapi membaca dan mengeksekusi satu pernyataan (mungkin digabungkan) pada suatu waktu. Lingkungan awal identik dengan program lengkap; setiap pernyataan dieksekusi di namespace __main__.

Under Unix, a complete program can be passed to the interpreter in three forms: with the -c string command line option, as a file passed as the first command line argument, or as standard input. If the file or standard input is a tty device, the interpreter enters interactive mode; otherwise, it executes the file as a complete program.

9.2. Masukan dari Berkas

Semua input yang dibaca dari berkas non-interaktif memiliki bentuk yang sama:

file_input ::=  (NEWLINE | statement)*

Sintaks ini digunakan dalam situasi berikut:

  • saat mengurai program Python lengkap (dari berkas atau dari string);
  • ketika mengurai sebuah modul;
  • saat mengurai sebuah string yang dilewatkan ke fungsi exec();

9.3. Masukan interaktif

Input dalam mode interaktif diuraikan menggunakan tata bahasa berikut:

interactive_input ::=  [stmt_list] NEWLINE | compound_stmt NEWLINE

Perhatikan bahwa pernyataan gabungan (tingkat atas) harus diikuti oleh baris kosong dalam mode interaktif; ini diperlukan untuk membantu parser mendeteksi akhir masukan.

9.4. Masukan ekspresi

eval() digunakan untuk masukan ekspresi. Itu mengabaikan spasi whitespace sebelumnya. Argumen string ke eval() harus memiliki bentuk berikut:

eval_input ::=  expression_list NEWLINE*