# 16. Lampiran

## 16.1. Mode Interaktif

### 16.1.1. Penanganan Kesalahan

When an error occurs, the interpreter prints an error message and a stack trace. In interactive mode, it then returns to the primary prompt; when input came from a file, it exits with a nonzero exit status after printing the stack trace. (Exceptions handled by an `except` clause in a `try` statement are not errors in this context.) Some errors are unconditionally fatal and cause an exit with a nonzero exit status; this applies to internal inconsistencies and some cases of running out of memory. All error messages are written to the standard error stream; normal output from executed commands is written to standard output.

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 provides two hooks to let you customize it: sitecustomize and usercustomize. To see how it works, you need first to find the location of your user site-packages directory. Start Python and run this code:

    >>> 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 works in the same way, but is typically created by an administrator of the computer in the global site-packages directory, and is imported before usercustomize. See the documentation of the `site` module for more details.

Catatan kaki

[1]

Masalah dengan paket GNU Readline dapat mencegah hal ini.