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

(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.x/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.
