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.
