# 16. Lampiran

## 16.1. Mode Interaktif

### 16.1.1. Penanganan Kesalahan

Ketika terjadi kesalahan, interpreter mencetak pesan kesalahan dan tumpukan jejak. Dalam mode interaktif, kemudian kembali ke prompt utama; ketika masukan datang dari berkas, akan keluar dengan status keluar yang tidak nol setelah mencetak tumpukan jejak. (Pengecualian yang ditangani oleh klausa `exception` dalam pernyataan :keyword:` try` bukan kesalahan dalam konteks ini.) Beberapa kesalahan berakibat fatal dan menyebabkan keluar dengan kode keluar selain-nol; ini berlaku untuk inkonsistensi internal dan beberapa kasus kehabisan memori. Semua pesan kesalahan ditulis ke aliran standar kesalahan; keluaran normal dari perintah yang dieksekusi ditulis ke standar keluaran.

Mengetik karakter interupsi (biasanya `Control-C` atau `Delete`) ke prompt utama atau sekunder membatalkan masukan dan kembali ke prompt utama. 1 Mengetik interupsi saat sebuah perintah dieksekusi memunculkan pengecualian `KeyboardInterrupt`, yang dapat ditangani oleh pernyataan :keyword:` try`.

### 16.1.2. Skrip Python Yang Dapat Dieksekusi

Pada sistem Unix BSD'ish, skrip Python dapat dibuat langsung dapat dieksekusi, seperti skrip shell, dengan meletakkan baris

    #!/usr/bin/env python3.5

(dengan asumsi bahwa interpreter ada di `PATH` pengguna) di awal skrip dan memberikan mode pada berkas untuk dapat dieksekusi. `#!` Harus merupakan dua karakter pertama dari file tersebut. Pada beberapa platform, baris pertama ini harus diakhiri dengan akhiran bergaya Unix (`'\n'`), bukan akhiran Windows (`'\r\n'`). Perhatikan bahwa hash, atau pon, karakter, `'#'`, digunakan untuk memulai komentar dengan Python.

Skrip bisa diberikan mode yang dapat dieksekusi, atau izin, menggunakan perintah chmod.

    $ chmod +x myscript.py

Pada sistem Windows, tidak ada gagasan tentang "mode yang dapat dieksekusi". Pemasang Python secara otomatis mengaitkan file `.py` dengan `python.exe` sehingga klik dua kali pada file Python akan menjalankannya sebagai skrip. Ekstensi juga bisa `.pyw`, dalam hal ini, jendela konsol yang biasanya muncul dihilangkan.

### 16.1.3. Berkas Permulaan Interaktif

Ketika Anda menggunakan Python secara interaktif, seringkali berguna untuk menjalankan beberapa perintah standar setiap kali interpreter dimulai. Anda dapat melakukan ini dengan mengatur variabel lingkungan bernama `PYTHONSTARTUP` ke nama berkas yang berisi perintah permulaan Anda. Ini mirip dengan fitur `.profile` dari shell Unix.

File ini hanya dibaca dalam sesi interaktif, bukan ketika Python membaca perintah dari skrip, dan bukan ketika `/dev/tty` diberikan sebagai sumber perintah eksplisit (yang jika tidak berperilaku seperti sesi interaktif). Itu dieksekusi di namespace yang sama di mana perintah interaktif dieksekusi, sehingga objek yang didefinisikan atau impor dapat digunakan tanpa kualifikasi dalam sesi interaktif. Anda juga dapat mengubah prompt `sys.ps1` dan `sys.ps2` dalam file ini.

Jika Anda ingin membaca berkas permulaan tambahan dari direktori saat ini, Anda dapat memrogram ini dalam berkas permulaan global menggunakan kode seperti `if os.path.isfile('.pythonrc.py'): exec(open('.pythonrc.py').read())`. Jika Anda ingin menggunakan berkas permulaan dalam skrip, Anda harus melakukan ini secara eksplisit dalam skrip:

    import os
    filename = os.environ.get('PYTHONSTARTUP')
    if filename and os.path.isfile(filename):
        with open(filename) as fobj:
            startup_file = fobj.read()
        exec(startup_file)

### 16.1.4. Modul Ubahsuaian

Python menyediakan dua kait untuk memungkinkan Anda menyesuaikannya: `sitecustomize` dan `usercustomize`. Untuk melihat cara kerjanya, Anda harus terlebih dahulu menemukan lokasi direktori site-packages pengguna Anda. Mulai Python dan operasikan kode ini:

    >>> import site
    >>> site.getusersitepackages()
    '/home/user/.local/lib/python3.5/site-packages'

Sekarang Anda dapat membuat file bernama `usercustomize.py` di direktori itu dan memasukkan apa pun yang Anda inginkan di dalamnya. Ini akan memengaruhi setiap seruan dari Python, kecuali dimulai dengan opsi `-s` untuk menonaktifkan impor otomatis.

`sitecustomize` bekerja dengan cara yang sama, tetapi biasanya dibuat oleh administrator komputer di direktori site-packages global, dan diimpor sebelum `usercustomize`. Lihat dokumentasi modul `site` untuk lebih jelasnya.

Catatan kaki

1

  Masalah dengan paket GNU Readline dapat mencegah hal ini.