16. Ek Bölüm
************


16.1. Etkileşimli Mod
=====================


16.1.1. Hata İşleme
-------------------

Bir hata oluştuğunda, yorumlayıcı bir hata iletisi ve yığın izlemesi
yazdırır. Etkileşimli modda, daha sonra birincil istemi döndürür; bir
dosyadan veri giriş gercekleştiğinde, yığın izlemeyi yazdırdıktan
sonra sıfır olmayan bir çıkış koduyla çıkar. ("try" deyimindeki
"except" yan tümcesi tarafından işlenen özel durumlar bu bağlamda hata
değildir.)  Bazı hatalar koşulsuz olarak ölümcüldür ve sıfır olmayan
bir çıkış koduyla çıkışa neden olur; bu, iç tutarsızlıklar ve belleğin
tükendiğine ilişkin bazı durumlar için geçerlidir.  Tüm hata iletileri
standart hata akışına yazılır; yürütülen komutlardan normal çıktı
standart çıktıya yazılır.

Yarıda kesme karakterinin (genellikle "Control-C" veya "Delete")
birincil veya ikincil istemine yazılması girişi iptal eder ve birincil
istemi döndürür. [1] Bir komut yürütülürken bir yarıda kesme karakteri
yazmak "KeyboardInterrupt" özel durumuna neden olur ve bu özel durum
"try" deyimi tarafından işlenebilir.


16.1.2. Yürütülebilir Python Komut Dosyaları
--------------------------------------------

BSD türü Unix sistemlerinde Python komut dosyaları, :: satırı koyarak
kabuk komut dosyaları gibi doğrudan yürütülebilir hale getirilebilir:

   #!/usr/bin/env python3.5

(yorumlayıcının kullanıcının "PATH") komut dosyasının başında olduğunu
ve dosyaya yürütülebilir bir mod verdiğini varsayarsak.  "#!" dosyanın
ilk iki karakteri olmalıdır.  Bazı platformlarda, bu ilk satırın
Windows ("'\r\n'") satır sonuyla değil, Unix stili bir satır sonuyla
("\n'") bitmesi gerekir.  Python'da yorum başlatmak için karma veya
pound karakteri olan "'#'" kullanıldığını unutmayın.

Komut dosyasına **chmod** komutu kullanılarak yürütülebilir mod veya
izin verilebilir.

   $ chmod +x myscript.py

Windows sistemlerinde, "yürütülebilir mod" kavramı yoktur.  Python
yükleyicisi otomatik olarak ".py" dosyalarını "python.exe" ile
ilişkilendirir, böylece python dosyasına çift tıklama komut dosyası
olarak çalıştırılır.  Uzantı ".pyw" 'de olabilir, bu durumda normalde
görünen konsol penceresi bastırılır.


16.1.3. Etkileşimli Başlangıç Dosyası
-------------------------------------

Python'u etkileşimli olarak kullandığınızda, yorumlayıcı her
başlatıldığında bazı standart komutların yürütülmesi genellikle
kullanışlıdır.  Bunu, başlatma komutlarınızı içeren bir dosyanın adına
"PYTHONSTARTUP" adlı bir ortam değişkeni ayarlayarak yapabilirsiniz.
Bu, Unix kabuklarının ".profile" özelliğine benzer.

Bu dosya Python komutları bir komut dosyasından okuduğunda değil,
yalnızca etkileşimli oturumlarda okunur. Python komutları bir komut
dosyasından okuduğunda, "/dev/tty" komutların açık kaynağı olarak
verildiğinde değil (aksi takdirde etkileşimli bir oturum gibi
davranır).  Etkileşimli komutların yürütüldüğü aynı ad alanında
yürütülür, böylece tanımladığı veya aldığı nesneler etkileşimli
oturumda nitelik olmadan kullanılabilir. Bu dosyadaki "sys.ps1" ve
"sys.ps2" istemlerini de değiştirebilirsiniz.

Geçerli dizinden ek bir başlangıç dosyası okumak istiyorsanız, bunu
genel başlangıç dosyasında "if os.path.isfile('.pythonrc.py'):
exec(open('.pythonrc.py').read()" gibi bir kod kullanarak
programlayabilirsiniz. Başlangıç dosyasını bir komut dosyasında
kullanmak istiyorsanız, bunu komut dosyasında açıkça yapmalısınız:

   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. Özelliştirme Modülleri
------------------------------

Python özelleştirmenize izin vermek için iki kanca sağlar:
"sitecustomize" ve "usercustomize".  Nasıl çalıştığını görmek için
önce kullanıcı sitesi paketleri dizininizin konumunu bulmanız gerekir.
Python'ı başlatın ve şu kodu çalıştırın:

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

Artık bu dizinde "usercustomize.py" adlı bir dosya oluşturabilir ve
içine istediğiniz her şeyi koyabilirsiniz.  Otomatik içe aktarmayı
devre dışı bırakmak için "-s" seçeneğiyle başlatılmadıkça Python'un
her çağrısını etkiler.

"sitecustomize" aynı şekilde çalışır, ancak genellikle genel site
paketleri dizinindeki bilgisayarın yöneticisi tarafından oluşturulur
ve "usercustomize" 'dan önce alınır.  Daha fazla ayrıntı için "site"
modülünün belgelerine bakın.

-[ Dipnotlar ]-

[1] GNU Readline paketiyle ilgili bir sorun bunu engelleyebilir.
