Kode Python dapat dieksekusi melalui dua jalur, yaitu sebagai skrip yang disimpan dalam berkas dan dijalankan sekaligus, atau melalui REPL (Read-Eval-Print Loop), yaitu sesi interaktif yang mengevaluasi setiap baris begitu diketik. Topik ini membandingkan kedua cara tersebut, memperlihatkan perbedaan perilakunya, dan menempatkan REPL sebagai meja kerja eksperimen sehari-hari. Penguasaan keduanya mempercepat siklus mencoba, mengoreksi, dan menyunting kode.
Menjalankan kode sebagai skrip#
Skrip adalah berkas Python yang dieksekusi dari baris pertama sampai baris terakhir tanpa jeda, dan mode inilah yang dipakai untuk program utuh. Berbeda dengan REPL, skrip tidak menampilkan hasil ekspresi secara otomatis. Ekspresi tetap dihitung, tetapi nilainya dibuang bila tidak dipakai. Agar hasil terlihat, tampilkan hasilnya secara eksplisit melalui print().
Buat berkas berikut untuk membuktikan perilaku tersebut.
# Dua ekspresi berikut dievaluasi tetapi hasilnya tidak ditampilkan
2 + 3
"ha" * 3
# Hanya pemanggilan print() yang menghasilkan keluaran
print("Hanya baris dengan print() yang tampil")Hanya baris dengan print() yang tampilDua ekspresi pada baris kedua dan ketiga dievaluasi tanpa meninggalkan jejak apa pun di keluaran. Baris terakhir adalah satu-satunya yang tampil karena hanya baris itu yang memanggil print(). Inilah sebabnya skrip yang berisi ekspresi saja tampak diam, padahal kodenya berjalan dan hasilnya memang tidak ditampilkan.
# jalankan skrip dari terminal
python3 ekspresi.pyHanya baris dengan print() yang tampilREPL untuk eksperimen cepat#
Sesi REPL dimulai dengan mengetik python3 di terminal tanpa nama berkas. Interpreter menampilkan tanda prompt berupa >>> lalu menunggu baris kode. Setiap baris dibaca (read), dievaluasi (eval), hasilnya dicetak (print), dan siklus itu berulang (loop). Sesi ditutup dengan perintah exit() atau dengan menekan Ctrl-D pada baris kosong.
>>> 2 + 3
5
>>> "ha" * 3
'hahaha'
>>> print("halo, REPL")
halo, REPL
>>> harga = 15000
>>> harga * 2
30000
>>> for i in range(3):
... print(i)
...
0
1
2
>>> exit()Dua perilaku pada transkrip layak diperhatikan. Hasil 2 + 3 tampil tanpa print() karena REPL menampilkan nilai ekspresi secara otomatis, sedangkan "ha" * 3 tampil dengan tanda kutip karena yang dicetak adalah representasi nilainya sebagaimana ditulis dalam kode. Sebaliknya, print(“halo, REPL”) menghasilkan teks tanpa tanda kutip karena print() mencetak isinya. Penugasan harga = 15000 tidak menampilkan apa pun karena penugasan tidak bernilai, tetapi begitu harga dipakai dalam ekspresi, hasilnya langsung terlihat.
Perulangan for pada transkrip memperlihatkan prompt sekunder ... yang menandai baris lanjutan. Badan perulangan menjorok empat spasi, dan baris ... kosong yang menyusulnya menutup blok tersebut. Mekanisme penjorokan ini berlaku identik pada skrip dan dijelaskan lebih lanjut pada bagian akhir topik.
Membandingkan kedua cara eksekusi#
| Aspek | Skrip | REPL |
|---|---|---|
| Cara memulai | python3 nama-berkas.py | python3 tanpa nama berkas |
| Hasil ekspresi | Tidak tampil kecuali melalui print() | Tampil otomatis |
| Kode tersimpan | Ya, dalam berkas .py | Tidak, hilang saat sesi ditutup |
| Cocok untuk | Program utuh yang dijalankan berulang | Mencoba potongan kode dengan cepat |
Kedua jalur menjalankan interpreter yang sama persis, sehingga tidak ada perbedaan bahasa yang perlu dihafal. Perbedaannya murni pada tampilan hasil dan penyimpanan kode. REPL tidak menyimpan apa pun, sehingga sesi panjang yang belum disalin ke berkas hilang begitu terminal ditutup. Sebaliknya, skrip kurang nyaman untuk sekadar mencoba satu ekspresi karena berkasnya harus disimpan dan programnya dijalankan ulang pada setiap suntingan.
Dari perbedaan itu lahir pola kerja yang lazim: eksperimen kecil dikerjakan di REPL, lalu kode yang sudah matang dipindahkan ke skrip. Skrip menjadi catatan permanen yang dapat dijalankan ulang kapan saja, sedangkan REPL tetap terbuka sebagai papan uji untuk memeriksa potongan berikutnya.
Indentasi adalah bagian dari sintaks#
Transkrip REPL memperlihatkan ciri khas Python yang tidak dimiliki banyak bahasa lain: indentasi menentukan struktur program. Baris print(i) menjorok di bawah baris for, dan penjorokan itulah yang menyatakan baris tersebut berada di dalam badan perulangan. Python tidak memakai kurung kurawal maupun kata kunci penutup blok, sehingga kode tampak bersih sekaligus menuntut kerapian.
Karena indentasi adalah sintaks, indentasi yang salah memicu error pada saat berkas dibaca, sebelum satu baris pun dieksekusi. Contoh berikut memeriksa potongan kode yang baris keduanya menjorok tanpa alasan.
try:
exec("x = 1\n y = 2")
except IndentationError as e:
print(type(e).__name__)
print(str(e))IndentationError
unexpected indent (<string>, line 2)Jenis error yang muncul adalah IndentationError, dan pesannya menunjuk letak kesalahan, yaitu baris kedua. Error jenis ini terdeteksi sebelum eksekusi dimulai, mirip kesalahan ejaan yang ditemukan saat berkas dimuat. Kaidahnya konsisten: baris di dalam satu blok menjorok sama banyak, dan empat spasi adalah konvensi yang dianjurkan panduan gaya PEP 8.
Kesalahan umum#
Berikut kesalahan yang paling sering terjadi ketika kedua mode mulai dipakai bergantian. Sebagian besar pemicunya adalah kebiasaan yang sah pada satu mode tetapi tidak berlaku pada mode lainnya.
- Mengharapkan hasil ekspresi tampil pada skrip tanpa print(). Tambahkan print() pada baris yang hasilnya perlu diperlihatkan, atau periksa dahulu nilainya di REPL.
- Mencampur tab dan spasi pada indentasi satu blok. Python menolak campuran tersebut dengan memicu error. Gunakan salah satu saja secara konsisten.
- Menyimpan kode REPL dengan mengandalkan ingatan setelah sesi ditutup. Salin baris yang sudah benar ke berkas sebelum keluar dari REPL.
Ringkasan#
- Skrip dieksekusi dari awal sampai akhir dengan
python3 nama-berkas.pydan hanya menampilkan nilai melalui print(). - REPL mengevaluasi setiap baris dan menampilkan hasil ekspresi secara otomatis sehingga cocok untuk eksperimen.
- Indentasi adalah bagian sintaks, dan indentasi yang salah memicu IndentationError sebelum program berjalan.
- Kode REPL tidak tersimpan di mana pun, sehingga baris yang sudah benar perlu disalin ke berkas skrip.
Referensi#
- Using the Python Interpreter — Python Software Foundation — Mengulas mode interaktif, prompt utama dan sekunder, serta cara keluar dari interpreter.
- Glossary — Python Software Foundation — Definisi resmi istilah seperti interpreter interaktif dan skrip.