# 14. Pengeditan Input Interaktif dan Penggantian Riwayat

Beberapa versi interpreter Python mendukung pengeditan jalur input aktual dan penggantian riwayat, mirip dengan fasilitas yang ditemukan di shell Korn dan shell Bash GNU. Ini diimplementasikan menggunakan pustaka GNU Readline, yang mendukung berbagai gaya pengeditan. Pustaka ini memiliki dokumentasi sendiri yang tidak akan kami duplikat di sini.

## 14.1. Pelengkapan Tab dan Pengeditan Riwayat

Penyelesaian nama variabel dan modul adalah diaktifkan secara otomatis pada startup interpreter sehingga tombol `Tab` memanggil fungsi pelengkapan; terlihat pada nama pernyataan Python, variabel lokal saat ini, dan nama modul yang tersedia. Untuk ekspresi putus-putus seperti `string.a`, itu akan mengevaluasi ekspresi hingga akhir `'.'` dan kemudian menyarankan penyelesaian dari atribut dari objek yang dihasilkan. Perhatikan bahwa ini dapat mengeksekusi kode yang-ditentukan-aplikasi jika suatu objek dengan metode `__getattr__()` menjadi bagian dari ekspresi. Konfigurasi bawaan juga menyimpan riwayat Anda menjadi berkas bernama `.python_history` di direktori pengguna Anda. Riwayat akan tersedia lagi saat sesi interpreter interaktif berikutnya.

## 14.2. Alternatif untuk Interpreter Interaktif

Fasilitas ini merupakan kemajuan yang sangat besar dibandingkan dengan interpreter versi sebelumnya; namun, ada beberapa keinginan yang tersisa: Akan lebih baik jika indentasi yang tepat disarankan pada baris lanjutan (parser tahu jika token indentasi diperlukan berikutnya). Mekanisme pelengkapan mungkin menggunakan tabel simbol interpreter. Perintah untuk memeriksa (atau bahkan menyarankan) tanda kurung, tanda kutip, dll., juga berguna.

Salah satu alternatif interpreter interaktif canggih yang telah ada selama beberapa waktu adalah IPython, yang menampilkan pelengkapan tab, eksplorasi objek, dan manajemen riwayat lanjut. Itu juga dapat sepenuhnya disesuaikan dan tertanam ke dalam aplikasi lain. Lingkungan interaktif ditingkatkan serupa lainnya adalah bpython.