kapak : > À v 'ºo - python türkiye · İÇİndekİler 1 bukitaphakkında1 1.1...

918
Kapak: Levent Güler

Upload: dangtruc

Post on 17-Feb-2019

223 views

Category:

Documents


0 download

TRANSCRIPT

Kapak: Levent Gler

Python 3 iin Trke KlavuzSrm 3

Yazan: Frat zgl

16.05.2016

NDEKLER

1 Bu Kitap Hakknda 11.1 Bu Kitab Nereden ndirebilirim? . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Bu Kitaptan Nasl Yararlanabilirim? . . . . . . . . . . . . . . . . . . . . . . . . . 11.3 Nereden Yardm Alabilirim? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.4 Projeye Nasl Yardmc Olabilirim? . . . . . . . . . . . . . . . . . . . . . . . . . . 21.5 Kullanm Koullar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Python Hakknda 42.1 Python Nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.2 Neden Programlama renmek steyeyim? . . . . . . . . . . . . . . . . . . . . 42.3 Neden Python? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.4 Python Nasl Telaffuz Edilir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.5 Platform Destei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.6 Farkl Python Srmleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.7 Hangi Seriyi renmeliyim? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Python Nasl Kurulur? 83.1 GNU/Linux Kullanclar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.2 Windows Kullanclar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.3 Python Kurulum ve alma Dizini . . . . . . . . . . . . . . . . . . . . . . . . . 144 Python Nasl altrlr? 154.1 GNU/Linux Kullanclar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154.2 Windows Kullanclar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204.3 Hangi Komut Hangi Srm altryor? . . . . . . . . . . . . . . . . . . . . . . 224.4 Sistem Komut Satr ve Python Komut Satr . . . . . . . . . . . . . . . . . . . . 225 Etkileimli Python 235.1 Etkileimli Kabukta lk Admlar . . . . . . . . . . . . . . . . . . . . . . . . . . . 245.2 Etkileimli Kabuun Hafzas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476 print() Fonksiyonu 496.1 Nedir, Ne e Yarar? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496.2 Nasl Kullanlr? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506.3 Bir Fonksiyon Olarak print() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546.4 print() Fonksiyonunun Parametreleri . . . . . . . . . . . . . . . . . . . . . . . . 556.5 Birka Pratik Bilgi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

i

7 Ka Dizileri 737.1 Ters Taksim (\) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757.2 Satr Ba (\n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777.3 Sekme (\t) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807.4 Zil Sesi (\a) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817.5 Ayn Satr Ba (\r) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827.6 Dey Sekme (\v) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837.7 mle Kaydrma (\b) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837.8 Kk Unicode (\u) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847.9 Byk Unicode (\U) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 857.10 Uzun Ad (\N) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 867.11 Onaltl Karakter (\x) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 877.12 Etkisizletirme (r) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 887.13 Sayfa Ba (\f) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907.14 Ka Dizilerine Toplu Bak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 918 Programlar Kaydetme ve altrma 928.1 GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 928.2 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 949 alma Ortam Tavsiyesi 969.1 Windows Kullanclar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 969.2 GNU/Linux Kullanclar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 989.3 Metin Dzenleyici Ayarlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 989.4 MS-DOS Komut Satr Ayarlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1009.5 Program rnekleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10010 Yorum ve Aklama Cmleleri 10410.1 Yorum areti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10510.2 Yorum aretinin Farkl Kullanmlar . . . . . . . . . . . . . . . . . . . . . . . . . 10611 Kullancdan Bilgi Almak 10911.1 input() Fonksiyonu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10911.2 Tip Dnmleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11211.3 eval() ve exec() Fonksiyonlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12311.4 format() Metodu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12712 Koullu Durumlar 13312.1 Koul Deyimleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13412.2 rnek Uygulama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14513 leler 14713.1 Aritmetik leler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14713.2 Karlatrma leleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15313.3 Bool leleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15413.4 Deer Atama leleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16213.5 Aitlik leleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16513.6 Kimlik leleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16613.7 Uygulama rnekleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16914 Dngler (Loops) 18014.1 while Dngs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18114.2 for Dngs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188ii

14.3 lgili Aralar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19414.4 rnek Uygulamalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20115 Hata Yakalama 21315.1 Hata Trleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21415.2 try... except... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21615.3 try... except... as... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21915.4 try... except... else... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22015.5 try... except... finally... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22215.6 raise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22215.7 Btn Hatalar Yakalamak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22315.8 rnek Uygulama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22416 Karakter Dizileri 22616.1 Karakter Dizilerinin elerine Erimek . . . . . . . . . . . . . . . . . . . . . . . 22716.2 Karakter Dizilerini Dilimlemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23416.3 Karakter Dizilerini Ters evirmek . . . . . . . . . . . . . . . . . . . . . . . . . . 23616.4 Karakter Dizilerini Alfabe Srasna Dizmek . . . . . . . . . . . . . . . . . . . . . 23816.5 Karakter Dizileri zerinde Deiiklik Yapmak . . . . . . . . . . . . . . . . . . . . 24016.6 nemli Fonksiyon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24416.7 Notlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25017 Karakter Dizilerinin Metotlar 25217.1 replace() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25217.2 split(), rsplit(), splitlines() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25417.3 lower() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26017.4 upper() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26317.5 islower(), isupper() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26517.6 endswith() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26617.7 startswith() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26718 Karakter Dizilerinin Metotlar (Devam) 26918.1 capitalize() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26918.2 title() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27118.3 swapcase() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27418.4 casefold() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27518.5 strip(), lstrip(), rstrip() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27518.6 join() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27818.7 count() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28018.8 index(), rindex() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28418.9 find, rfind() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28718.10center() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28818.11rjust(), ljust() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28918.12zfill() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29018.13partition(), rpartition() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29118.14encode() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29218.15expandtabs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29219 Karakter Dizilerinin Metotlar (Devam) 29319.1 str.maketrans(), translate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29319.2 isalpha() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30419.3 isdigit() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

iii

19.4 isalnum() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30519.5 isdecimal() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30619.6 isidentifier() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30619.7 isnumeric() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30619.8 isspace() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30719.9 isprintable() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30720 Karakter Dizilerini Biimlendirmek 30920.1 % areti ile Biimlendirme (Eski Yntem) . . . . . . . . . . . . . . . . . . . . . 31120.2 format() Metodu ile Biimlendirme (Yeni Yntem) . . . . . . . . . . . . . . . . . 32321 Listeler ve Demetler 33221.1 Listeler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33321.2 Demetler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36722 Listelerin ve Demetlerin Metotlar 37222.1 Listelerin Metotlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37222.2 Demetlerin Metotlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38323 Sayma Sistemleri 38523.1 Onlu Sayma Sistemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38523.2 Sekizli Sayma Sistemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38623.3 On Altl Sayma Sistemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38823.4 kili Sayma Sistemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39023.5 Sayma Sistemlerini Birbirine Dntrme . . . . . . . . . . . . . . . . . . . . . 39123.6 Sayma Sistemlerinin Birbirlerine Kar Avantajlar . . . . . . . . . . . . . . . . . 39424 Saylar 39624.1 Saylarn Metotlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39724.2 Aritmetik Fonksiyonlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40025 Temel Dosya lemleri 40425.1 Dosya Oluturmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40425.2 Dosyaya Yazmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40525.3 Dosya Okumak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40725.4 Dosyalar Otomatik Kapatma . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40925.5 Dosyay leri-Geri Sarmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41025.6 Dosyalarda Deiiklik Yapmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41225.7 Dosyaya Erime Kipleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41626 Dosyalarn Metot ve Nitelikleri 41926.1 closed Nitelii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41926.2 readable() Metodu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41926.3 writable() Metodu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42026.4 truncate() Metodu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42026.5 mode Nitelii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42126.6 name Nitelii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42226.7 encoding Nitelii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42227 kili (Binary ) Dosyalar 42327.1 kili Dosyalarla rnekler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42428 Basit bir letiim Modeli 432iv

28.1 8 Bitlik bir Sistem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43228.2 Hata Kontrol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43428.3 Karakterlerin Temsili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43629 Karakter Kodlama (Character Encoding ) 43929.1 Giri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43929.2 ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44229.3 UNICODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44929.4 Konu ile ilgili Fonksiyonlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45830 Baytlar (Bytes) ve Bayt Dizileri (Bytearrays) 46330.1 Giri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46330.2 Eskisi ve Yenisi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46530.3 Bayt Tanmlamak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46630.4 bytes() Fonksiyonu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46730.5 Baytlarn Metotlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46730.6 Bayt Dizileri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46930.7 Bayt Dizilerinin Metotlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47031 Szlkler 47231.1 Szlk Tanmlamak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47331.2 Szlk elerine Erimek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47431.3 Szlklerin Yaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47831.4 Szlklere e Eklemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48131.5 Szlk eleri zerinde Deiiklik Yapmak . . . . . . . . . . . . . . . . . . . . . 48431.6 Szlk reteleri (Dictionary Comprehensions ) . . . . . . . . . . . . . . . . . . 48432 Szlklerin Metotlar 48632.1 keys() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48632.2 values() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48732.3 items() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48832.4 get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48932.5 clear() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49032.6 copy() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49132.7 fromkeys() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49232.8 pop() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49332.9 popitem() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49332.10setdefault() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49432.11update() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49433 Kmeler ve Dondurulmu Kmeler 49633.1 Kmeler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49633.2 Dondurulmu Kmeler (Frozenset) . . . . . . . . . . . . . . . . . . . . . . . . . 51234 Fonksiyonlar 51334.1 Fonksiyon Nedir ve Ne e Yarar? . . . . . . . . . . . . . . . . . . . . . . . . . . 51334.2 Fonksiyon Tanmlamak ve armak . . . . . . . . . . . . . . . . . . . . . . . . 51734.3 Fonksiyonlarn Yaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52134.4 Fonksiyonlar Ne e Yarar? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52434.5 Parametreler ve Argmanlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52834.6 return Deyimi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53734.7 rnek bir Uygulama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539

v

34.8 Fonksiyonlarn Kapsam ve global Deyimi . . . . . . . . . . . . . . . . . . . . . 54335 Gml Fonksiyonlar 54835.1 abs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54835.2 round() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54935.3 all() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55035.4 any() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55135.5 ascii() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55235.6 repr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55335.7 bool() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55435.8 bin() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55435.9 bytes() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55435.10bytearray() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55735.11chr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55835.12 list() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55835.13set() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55935.14 tuple() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55935.15 frozenset() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55935.16complex() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56035.17float() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56035.18 int() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56035.19str() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56135.20dict() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56235.21callable() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56335.22ord() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56335.23oct() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56335.24hex() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56335.25eval(), exec(), globals(), locals(), compile() . . . . . . . . . . . . . . . . . . . . . . 56435.26copyright() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56735.27credits() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56835.28 license() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56835.29dir() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56835.30divmod() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56835.31enumerate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56935.32exit() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57035.33help() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57035.34 id() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57135.35 input() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57235.36 format() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57235.37filter() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57235.38hash() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57535.39 isinstance() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57535.40 len() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57635.41map() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57635.42max() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57735.43min() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57935.44open() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57935.45pow() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58335.46print() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58435.47quit() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58435.48range() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585

vi

35.49reversed() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58735.50sorted() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58735.51slice() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59335.52sum() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59435.53 type() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59535.54zip() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59535.55vars() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59636 leri Dzey Fonksiyonlar 59836.1 Lambda Fonksiyonlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59836.2 zyinelemeli (Recursive ) Fonksiyonlar . . . . . . . . . . . . . . . . . . . . . . . 60237 Modller 61537.1 Modl Nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61537.2 Hazr Modller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61737.3 Modllerin e Aktarlmas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61837.4 Kendi Tanmladmz Modller . . . . . . . . . . . . . . . . . . . . . . . . . . . 62637.5 nc ahs Modlleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63437.6 __all__ Listesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63537.7 Modllerin zel Nitelikleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63838 Nesne Tabanl Programlama (OOP) 64838.1 Giri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64838.2 Snflar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64938.3 Snflar Ne e Yarar? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65038.4 Snf Tanmlamak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65838.5 Snf Nitelikleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65938.6 Snflarn rneklenmesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66138.7 rnek Nitelikleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66738.8 __init__ Fonksiyonu ve self . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66738.9 rnek Metotlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67339 Nesne Tabanl Programlama (Devam) 68039.1 Snf Metotlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68039.2 @classmethod Bezeyicisi ve cls . . . . . . . . . . . . . . . . . . . . . . . . . . . 68539.3 Alternatif naclar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68839.4 Statik Metotlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69739.5 @staticmethod Bezeyicisi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69740 Nesne Tabanl Programlama (Devam) 70140.1 Nesneler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70140.2 Nesne Nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70140.3 Basit Bir Oyun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70340.4 Her ey Bir Nesnedir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71340.5 Birinci Snf eler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71441 Nesne Tabanl Programlama (Devam) 71741.1 Snf yeleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71741.2 @property Bezeyicisi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72742 Nesne Tabanl Programlama (Devam) 73842.1 Miras Alma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73842.2 Taban Snflar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740

vii

42.3 Alt Snflar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74242.4 Miras Alma Trleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74442.5 super() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75042.6 object Snf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75343 Nesne Tabanl Programlama (Devam) 75643.1 Tkinter Hakknda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75643.2 Prosedrel Bir rnek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75743.3 Snfl Bir rnek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76243.4 oklu Miras Alma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76443.5 Dahil Etme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76744 Nesne Tabanl Programlama (Devam) 76944.1 na, lklendirme ve Sonlandrma . . . . . . . . . . . . . . . . . . . . . . . . . . 76945 Paketler 77145.1 Paket Nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77145.2 Paket Trleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77245.3 Paketlerin e Aktarlmas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77445.4 Kendi Oluturduumuz Paketler . . . . . . . . . . . . . . . . . . . . . . . . . . . 77746 Dzenli fadeler 78646.1 Dzenli fadelerin Metotlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78746.2 Metakarakterler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79446.3 Eleme Nesnelerinin Metotlar . . . . . . . . . . . . . . . . . . . . . . . . . . . 81046.4 zel Diziler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81246.5 Dzenli fadelerin Derlenmesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81446.6 Dzenli fadelerle Metin/Karakter Dizisi Deitirme lemleri . . . . . . . . . . 81646.7 Sonu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82047 Sqlite ile Veritaban Programlama 82147.1 Giri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82147.2 Neden Sqlite? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82147.3 Sqliten Yaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82247.4 Yardmc Aralar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82347.5 Yeni Bir Veritaban Oluturmak . . . . . . . . . . . . . . . . . . . . . . . . . . . 82447.6 Varolan Bir Veritabanyla Balant Kurmak . . . . . . . . . . . . . . . . . . . . . 82647.7 mle Oluturma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82647.8 Tablo Oluturma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82747.9 artl Tablo Oluturma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82847.10Tabloya Veri Girme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82947.11Verilerin Veritabanna lenmesi . . . . . . . . . . . . . . . . . . . . . . . . . . . 83047.12Veritabannn Kapatlmas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83147.13Parametreli Sorgular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83247.14Tablodaki Verileri Semek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83347.15Seilen Verileri Almak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83447.16Veri Szme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83947.17Veritaban Gvenlii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84047.18Blm Sorular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84548 nemli Standart Ktphane Modlleri 84748.1 os Modl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847

viii

48.2 sys Modl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86548.3 random Modl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87748.4 datetime Modl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88148.5 time Modl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89249 Katkda Bulunanlar 89749.1 Barbaros Akkurt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89849.2 ebnem Duyar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89949.3 Onur Eker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89949.4 Emre Erzgn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89949.5 Tayfun Yaar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89949.6 Metin Hrn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89949.7 Ahmet ztekin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89949.8 Mesut diz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90049.9 Levent Civa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90049.10Frat Ekinci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90049.11Talha Kesler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90049.12mer Gk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90049.13Yunus Emre Bulut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90049.14Erhan Paaolu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90049.15Cemre Efe Karaka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90149.16Salim Yldrm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90149.17aatay Genlik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90149.18Valeh Asadl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90149.19Halit Turan Arcan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90149.20Levent Gler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90149.21Yaar Celep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90249.22Uur Uyar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90249.23Serdar alar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90249.24Ahmet Onur Yldrm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90249.25Anl lginolu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90349.26Hseyin Ula Yeltrk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90349.27Nuri Acar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90349.28Azat Frat imen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90349.29Aykut Karda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90349.30Sezer Bozkr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90349.31Alican Uzunhan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90349.32zgr zer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90449.33Kerim Yldz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90449.34Muhammed Ylmaz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90449.35Ahmet Erdoan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90449.36Abdurrahman Dursun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90449.37Tahir Uzelli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90549.38Mehmet Akbay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90549.39Mehmet elikyontar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90549.40Sava Zengin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90549.41Tuncay Gven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90549.42Cafer Ulu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90549.43Nikita Trkmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90549.44Axolotl Axolotl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905

ix

x

BLM 1

Bu Kitap Hakknda

Elinizdeki kitap, Python programlama dili iin kapsaml bir Trke kaynak oluturmaprojesi olan istihza.comun bir rndr. Bu kitabn amac, herhangi bir sebeple Pythonprogramlama diline ilgi duyan, bu programlama dilini renmek isteyen kiilere bu diliolabildiince hzl, ayrntl ve kolay bir ekilde retmektir.Bu kitabn hedef kitlesi, programlamay hi bilmeyen kiilerdir. Bu sebeple, bu kitapta derskonularn olabildiince ayrntl ve basitletirilmi bir ekilde ele almaya altk. Ancakeer gemiten gelen bir programlama deneyiminiz varsa, stelik programlamaya ilikinkavramlara da ainaysanz, bu kitab skc bulabilirsiniz. yle bir durumda, bu belgelerinyerine, Python programlama diline ait resmi klavuzun, yine istihza.com projesinin bir rnolan Trke evirisini takip etmeyi tercih edebilirsiniz. Fakat reneceiniz ilk programlamadili Python ise, resmi klavuzu anlamak size epey zor gelecektir.

1.1 Bu Kitab Nereden ndirebilirim?Bu kitab nternet zerinden takip edebileceiniz gibi, depodan PDF veya EPUB biimlerindebilgisayarnza da indirebilirsiniz. Ancak bu kitabn henz yazlma aamasnda olduunu veieriinin sk sk gncellendiini aklnzdan karmayn. Dolaysyla, bilgisayarnza indirdiinizPDF ve EPUB belgeleri gncelliini abucak yitirecektir. O yzden, eer mmknse, kitabevrim ii kaynandan takip etmeniz veya bu mmkn deilse, PDF/EPUB belgelerini sk skyeniden indirmeniz daha mantkl olacaktr.

1.2 Bu Kitaptan Nasl Yararlanabilirim?Elinizdeki kitap, epey uzun ve ayrntl makalelerden oluuyor. Dolaysyla bu kitab elinizealp bir roman gibi okumaya alrsanz, sklp renme azminizi kaybedebilirsiniz. Bu kitabsklmadan ve bkknla dmeden takip edebilmeniz iin size birka neride bulunalm.Programlama dillerini, sanki tarih, corafya veya felsefe alyormusunuz gibi, kitabagmlp harl harl okuyarak renemezsiniz. Programlama dillerini renebilmek iin sizinde etkin bir ekilde renme srecine katlmanz gerekir. Yani bu kitaptaki makalelere kafanzgmmek yerine, bol bol rnek kod yazmaya alrsanz, rendiiniz eyler zihninizde dahakolay yer edecektir. Birincisi bu.kincisi, kimse sizden bu kitaptaki her ayrnty ezberlemenizi beklemiyor. Maharet, birkonuya ilikin btn ayrntlar aklda tutabilmekte deildir. yi bir programc, bir konuya dairnasl aratrma yapacan ve kaynaklardan nasl faydalanacan bilir. Bir yazlm gelitirici

1

http://www.istihza.com/hakkinda.htmlhttps://docs.python.org/3/http://www.istihza.com/resmi/py3{]}http://indir.istihza.com/belgeler/py3

Python 3 iin Trke Klavuz, Srm 3

aday olarak sizin de renmeniz gereken ey, grdnz btn konular en ince ayrntsnakadar ezberlemeye kalkmaktan ziyade, o konuya ilikin ilk aamada fikir sahibi olmayaalmaktr. Pythonda ilerledike, zaten belli alanlara ilgi duyacak, kendinizi o alanlardagelitirmeye alacaksnz. Elbette ok uratnz konulara ilikin ayrntlar da daha kolayaklnzda kalacaktr. stelik bir projeye ilikin gerekliliklerin sizi ynlendirmesiyle, bellikonularda daha ayrntl aratrma yapma frsat da bulacaksnz.ncs, bir konuyu alrken yeterince anlayamadnz hissederseniz, ltfen dudanzbzp bir duvar kesine kvrlarak kendi kendinizi ylgnla drmeyin. Eer bir konuyuanlamadysanz, okuyup gein. Okuyup gemek iinize sinmiyorsa, aada belirttiimizekilde yardm isteyin.

1.3 Nereden Yardm Alabilirim?Bu kitapta Python programlama diline ilikin konular olabildiince temiz ve anlalr bir dilleanlatmaya altk. Ancak yine de baz konular zihninizde tam olarak yer etmeyebilir. stelikkimi zaman, bir konuyu daha iyi anlayabilmek ya da bir sorunun stesinden gelebilmek iinbilen birilerinin yardmna da ihtiya duyabilirsiniz. te byle durumlarda istihza.comunforum alanna urayarak baka Python programclarndan yardm isteyebilirsiniz.Forum alan hem bilgi edinmek, hem de bildiklerinizi paylamak iin olduka elverili birortamdr. Foruma ilk giriiniz muhtemelen yardm istemek iin olacaktr. Ama ilerleyenzamanlarda Python bilginiz arttka bir de bakacaksnz ki yardm ararken yardm ederduruma gelmisiniz. te forum; kendinizdeki deiimi grmek, bilgi dzeyinizdeki art takipetmek ve hatta yeni eyler renmek iin bulunmaz bir frsattr.

1.4 Projeye Nasl Yardmc Olabilirim?Bu kitabn amac, kitab okuyanlara Python programlama dilini doru ve ayrntl bir ekilderetmek olduu kadar, bu programlama dilini retirken dzgn ve anlalr bir Trke dekullanmaktr. Bu bakmdan, kitapta bulabileceiniz kod hatalaryla birlikte, kitaptaki anlatm,yazm ve noktalama hatalarn da yazara iletirseniz, istihza.com projesine nemli bir katkdabulunmu olursunuz.Ayrca bkz.:Projeye bu ekilde katkda bulunanlarn listesini Katkda Bulunanlar balkl sayfadagrebilirsiniz.Bunun dnda, projeye destek olmann bir baka yolu, forum alannda sorulan sorularcevaplamaya almaktr. Bu ekilde hem projeye destek olmu, hem bakalarna yardmetmi, hem de kendi bilginizi artrm olursunuz.

1.5 Kullanm KoullarBu kitaptaki bilgiler, istihza.comun teki ksmlar gibi, Creative Commons lisans altndadr.Bu lisansa gre, bu kitaptaki btn bilgilerden herkes cretsiz olarak yararlanabilir. Eeristerseniz burada grdnz belgelerin ktsn alabilir, tandnz veya tanmadnzherkesle gnl rahatlyla paylaabilirsiniz. Ancak bu belgeleri baka bir yerde

2 Blm 1. Bu Kitap Hakknda

http://www.istihza.com/forum

Python 3 iin Trke Klavuz, Srm 3

kullanacaksanz, istihza.com adresini kaynak olarak gstermeli ve bu belgeleri kesinliklesatmamalsnz. Arzu ederseniz belgeleri oaltp cretsiz olarak databilirsiniz.

1.5. Kullanm Koullar 3

BLM 2

Python Hakknda

Eer yaamnzn bir dneminde herhangi bir programlama dili ile az veya ok ilgilendiyseniz,Python adn duymu olabilirsiniz. nceden bir programlama dili deneyiminiz hi olmamsadahi, Python adnn bir yerlerden kulanza alnm olma ihtimali bir hayli yksek. Busatrlar okuyor olduunuza gre, Python adn en az bir kez duymu olduunuzu ve bu eyekar iinizde hi deilse bir merak uyandn varsayabiliriz.Peki, en kt ihtimalle kulak dolgunluunuz olduunu varsaydmz bu ey hakknda acabaneler biliyorsunuz?te biz bu ilk blmde, fazla teknik ayrntya kamadan, Python hakknda ksa ksa bilgilervererek Pythonn ne olduunu ve bununla neler yapabileceinizi anlatmaya alacaz.

2.1 Python Nedir?Tahmin edebileceiniz gibi Python (C, C++, Perl, Ruby ve benzerleri gibi) bir programlamadilidir ve tpk teki programlama dilleri gibi, nnzde duran kara kutuya, yani bilgisayarahkmetmenizi salar.Bu programlama dili Guido Van Rossum adl Hollandal bir programc tarafndan 90l yllarnbanda gelitirilmeye balanmtr. ou insan, isminin Python olmasna aldanarak, buprogramlama dilinin, adn piton ylanndan aldn dnr. Ancak zannedildiinin aksinebu programlama dilinin ad piton ylanndan gelmez. Guido Van Rossum bu programlamadilini, The Monty Python adl bir ngiliz komedi grubunun, Monty Pythons Flying Circus adlgsterisinden esinlenerek adlandrmtr. Ancak her ne kadar gerek byle olsa da, Pythonprogramlama dilinin pek ok yerde bir ylan figr ile temsil edilmesi neredeyse bir gelenekhalini almtr.Dediimiz gibi, Python bir programlama dilidir. stelik pek ok dile kyasla renmesikolay bir programlama dilidir. Bu yzden, eer daha nce hi programlama deneyiminizolmamsa, programlama maceranza Pythonla balamay tercih edebilirsiniz.

2.2 Neden Programlama renmek steyeyim?Gnlk yaamnza yle bir bakn. Gerek i yerinizde olsun, gerek evde bilgisayar bandaolsun, belli ileri tekdze bir ekilde tekrar ettiinizi greceksiniz. Mesela srekli olarak yazlbelgelerle uramanz gerektiren bir ite alyor olabilirsiniz. Belki de her gn onlarcabelgeyi ap bu belgelerde birtakm bilgiler aryor, bu bilgileri dzeltiyor, yeniliyor veya

4

Python 3 iin Trke Klavuz, Srm 3

siliyorsunuzdur. Bu ilemlerin ne kadar vakit alc ve skc olduunu dnn. Eer birprogramlama dili biliyor olsaydnz, btn bu ilemleri sizin yerinize bu programlama dilihallediyor olabilirdi.te Python programlama dili byle bir durumda devreye girer. Her gn saatler boyuncauratnz ilerinizi, yalnzca birka satr Python kodu yardmyla birka saniye iindetamamlayabilirsiniz.Ya da yle bir durum dnn: altnz i yerinde PDF belgeleriyle bolca har neiroluyor olabilirsiniz. Belki de yzlerce sayfalk kaeli ve imzal belgeyi PDF haline getirmenizgerekiyordur. stelik sizden bu belgeleri mmkn olduunca tek para halinde PDFlemenizisteniyor olabilir. Ama o yzlerce sayfay taraycdan geirirken iin tam ortasnda bir aksilikoluyor, makine arzalanyor ve belki de ister istemez belgeniz blnyordur.te Python programlama dili byle bir durumda da devreye girer. Eer Python programlamadilini renirseniz, nternette saatlerce cretsiz PDF birletirme program aramak veyaprofesyonel yazlmlara onlarca dolar para vermek yerine, belgelerinizi birletirip iinizigrecek program kendiniz yazabilirsiniz.Elbette Pythonla yapabilecekleriniz yukarda verdiimiz basit rneklerle snrl deildir.Python kullanarak masast programlama, oyun programlama, tanabilir cihazprogramlama, web programlama ve a programlama gibi pek ok alanda almalaryrtebilirsiniz.

2.3 Neden Python?Python programlarnn en byk zelliklerinden birisi, C ve C++ gibi dillerin aksine,derlenmeye gerek olmadan altrlabilmeleridir. Pythonda derleme ilemi ortadankaldrld iin, bu dille olduka hzl bir ekilde program gelitirilebilir.Ayrca Python programlama dilinin basit ve temiz sz dizimi, onu pek ok programctarafndan tercih edilen bir dil haline getirmitir. Pythonn sz diziminin temiz ve basit olmassayesinde hem program yazmak, hem de bakas tarafndan yazlm bir program okumak,baka dillere kyasla ok kolaydr.Pythonn yukarda saylan zellikleri sayesinde dnya apnda n sahibi byk kurulular(Google, YouTube ve Yahoo! gibi) bnyelerinde her zaman Python programclarna ihtiyaduyuyor. Mesela pek ok byk irketin Python bilen programclara i imkan saladn,Pythonn ba gelitiricisi Guido Van Rossumun 2005 ile 2012 yllar arasnda Googledaaltn, 2012 ylnn sonlarna doru ise Dropbox irketine getiini sylersek, buprogramlama dilinin nemi ve geerlilii herhalde daha belirgin bir ekilde ortaya kacaktr.Python programlama dili ve bu dili hakkyla bilenler sadece uluslararas irketlerin ilgisiniekmekle kalmyor. Python son zamanlarda Trkiyedeki kurum ve kurulularn da dikkatiniekmeye balad. Bu dil artk yava yava Trkiyedeki niversitelerin mfredatnda dakendine yer buluyor.Szn z, pek ok farkl sebepten, baka bir programlama dilini deil de, Pythonprogramlama dilini renmek istiyor olabilirsiniz.

2.3. Neden Python? 5

Python 3 iin Trke Klavuz, Srm 3

2.4 Python Nasl Telaffuz Edilir?Python programlama dili zerine bu kadar sz syledik. Peki yabanc bir kelime olan python nasl telaffuz edeceimizi biliyor muyuz?Gelitiricisi Hollandal olsa da python ngilizce bir kelimedir. Dolaysyla bu kelimenintelaffuzunda ngilizcenin kurallar geerli. Ancak bu kelimeyi hakkyla telaffuz etmek, ana diliTrke olanlar iin pek kolay deil. nk bu kelime iinde, Trkede yer almayan ve telaffuzupeltek syi andran [th] sesi var. ngilizce bilenler bu sesi think (dnmek) kelimesindenhatrlayacaklardr. Ana dili Trke olanlar think kelimesini genellikle [tink] eklinde telaffuzeder. Dolaysyla python kelimesini de [paytn] eklinde telaffuz edebilirsiniz.Python kelimesini tamamen Trkeletirerek [piton] eklinde telaffuz etmeyi yeleyenler devar. Elbette siz de dilinizin dnd bir telaffuzu tercih etmekte zgrsnz.Bu arada, eer python kelimesinin ngilizce telaffuzunu dinlemek istiyorsanz howjsay.comadresini ziyaret edebilir, Guido Van Rossumun bu kelimeyi nasl telaffuz ettiini merakediyorsanz da http://goo.gl/bx9iJu adresindeki tantm videosunu izleyebilirsiniz.

2.5 Platform DesteiPython programlama dili pek ok farkl iletim sistemi ve platform zerinde alabilir.GNU/Linux, Windows, Mac OS X, AS/400, BeOS, MorphOS, MS-DOS, OS/2, OS/390, z/OS,RiscOS, S60, Solaris, VMS, Windows CE, HP-UX, iOS ve Android gibi, belki adn dahiduymadnz pek ok ortamda Python uygulamalar gelitirebilirsiniz. Ayrca herhangi birortamda yazdnz bir Python program, zerinde hibir deiiklik yaplmadan veya ufakdeiikliklerle baka ortamlarda da altrlabilir.Biz bu belgelerde Python programlama dilini GNU/Linux veMicrosoft Windows iletim sistemizerinden anlatacaz. Ancak sk skya bel balayacamz zel bir GNU/Linux datmveya Windows srm yok. Bu yzden, hangi GNU/Linux datmn veya hangi Windowssrmn kullanyor olursanz olun, buradaki bilgiler yardmyla Python programlama dilinirenebilir, rendiklerinizi kendi iletim sisteminize uyarlayabilirsiniz.Not: Bu satrlarn yazarnn, Ubuntu, CentOs, Windows 7 ve Windows 10 kurulubilgisayarlara eriimi olduu iin, bu kitaptaki ekran grntleri genellikle bu iletimsistemlerinden alnm olacaktr.

2.6 Farkl Python SrmleriEer daha nce Python programlama dili ile ilgili aratrma yaptysanz, u anda piyasada ikifarkl Python serisinin olduu dikkatinizi ekmi olmal. 20.04.2016 tarihi itibariyle piyasadaolan en yeni Python srmleri Python 2.7.11 ve Python 3.5.1dir.Eer bir Python srm 2 says ile balyorsa (mesela 2.7.11), o srm Python 2.x serisineaittir. Yok eer bir Python srm 3 says ile balyorsa (mesela 3.5.1), o srm Python 3.xserisine aittir.Peki neden piyasada iki farkl Python srm var ve bu bizim iin ne anlama geliyor?

6 Blm 2. Python Hakknda

http://www.howjsay.com/http://goo.gl/bx9iJu

Python 3 iin Trke Klavuz, Srm 3

Python programlama dili 1990 ylndan bu yana gelitirilen bir dil. Bu sre iinde pek okPython program yazld ve insanlarn kullanmna sunuldu. u anda piyasada Pythonn 2.xserisinden bir srmle yazlm pek ok program bulunuyor. 3.x serisi ise ancak son yllardayaygnlk kazanmaya balad.Not: Biz bu kitapta kolaylk olsun diye Pythonn 3.x serisini Python3; 2.x serisini ise Python2olarak adlandracaz.Python3, Python2ye gre hem ok daha gldr, hem de Python2nin hatalarndanarndrlmtr. Python3teki byk deiikliklerden tr, Python2 ile yazlm bir programPython3 altnda almayacaktr. Ayn durum bunun tersi iin de geerlidir. Yani Python3kullanarak yazdnz bir program Python2 altnda almaz.Dediimiz gibi, piyasada Python2 ile yazlm ok sayda program var. te bu sebeple Pythongelitiricileri uzun bir sre daha Python2yi gelitirmeye devam edecek. Elbette gelitiricilerbir yandan da Python3 zerinde almay ve bu yeni seriyi gelitirmeyi srdrecek.Farkl Python serilerinin var olmasndan tr, Python ile program yazarken hangi seriyeait srmlerden birini kullandnz bilmeniz, yazacanz programn kaderi asndan byknem tar.

2.7 Hangi Seriyi renmeliyim?Dediimiz gibi, u anda piyasada iki farkl Python serisi var: Python3 ve Python2. Peki acabahangi seriye ait bir srm renmelisiniz?[Ksa cevap]Python3 renmelisiniz.[Uzun cevap]Eer Python programlama diline yeni balyorsanz Python3 renmeniz daha doruolacaktr. Ama eer Python programlama dilini belirli bir proje zerinde almakzere reniyorsanz, hangi srm renmeniz gerektii, projede kullanacanz yardmcmodllerin durumuna baldr. Zira u anda piyasada bulunan btn Pythonmodlleri/programlar henz Python3e aktarlm deil.Eer projenizde kullanmay planladnz yardmc modller halihazrda Python3eaktarlmsa Python3 renebilirsiniz. Ancak eer bu modllerin henz Python3 srmkmamsa sizin de Python2 ile devam etmeniz daha uygun olabilir. Ama her halkardaPython3n bu dilin gelecei olduunu ve gnn birinde Python2nin tamamen tedavldenkalkacan da aklnzn bir kesinde bulundurun.

2.7. Hangi Seriyi renmeliyim? 7

BLM 3

Python Nasl Kurulur?

Python ile program yazabilmemiz iin bu programlama dilinin bilgisayarmzda kurulu olmasgerekiyor. Bu programlama dilini kurmanzn gerekip gerekmedii, kullandnz iletimsistemine baldr. Biz burada hem GNU/Linux hem de Windows kullanclarnn durumunusrasyla ve ayr ayr inceleyeceiz. Dilerseniz ncelikle GNU/Linux kullanclarnn durumunabakalm:Not: Bu kitap boyunca baz konularn GNU/Linux ve Windows kullanclar iin ayr ayranlatldn greceksiniz. Ancak konular bu ekilde ayrlm da olsa, ben size her ikisinide okumanz tavsiye ederim. nk bu blmlerde her iki kullanc grubunun da ilgisiniekebilecek bilgilere rastlayacaksnz. Ayrca bu blmler farkl kullanc gruplarna hitapediyor olsa da, aslnda bu blmlerin birbirini tamamlayc nitelikte olduunu greceksiniz.

3.1 GNU/Linux KullanclarGNU/Linux datmlarna Python programlama dilini kurarken baz noktalar gz nndebulundurmamz gerekiyor. te bu blmde bu nemli noktalarn neler olduunuinceleyeceiz.3.1.1 Kurulu Python SrmHemen hemen btn GNU/Linux datmlarnda Python programlama dili kurulu olarak gelir.rnein Ubuntuda Python zaten kuruludur.Ancak burada yle bir durum var:Daha nce de belirttiimiz gibi, u anda piyasada iki farkl Python serisi bulunuyor. Bunlardanbirinin Pythonn 2.x serisi, tekinin ise 3.x serisi olduunu biliyorsunuz.Sisteminizde kurulu olan Python srmn denetlemek iin komut satrnda ncelikle ukomutu vermeyi deneyin (byk V ile):python -V

Eer bu komuttan Python 2.x.y eklinde bir kt alyorsanz, yani x ve yden nceki ksm 2 ilebalyorsa sisteminizde Python2 kuruludur.Ancak python -V komutundan Python 2.x.y eklinde bir kt almanz sisteminizde sadecePython2nin kurulu olduunu gstermez. Sisteminizde Python2 ile birlikte Python3 de8

Python 3 iin Trke Klavuz, Srm 3

halihazrda kurulu olabilir. rnein Ubuntu GNU/Linuxun 12.10 srmnden itibaren hemPython2, hem de Python3 sistemde kurulu vaziyettedir.Kullandnz GNU/Linux datmnda durumun ne olduunu denetlemek iin yukardakikomutu bir de python3 -V eklinde altrmay deneyebilirsiniz. Eer bu komut size bir hatamesaj yerine bir srm numaras veriyorsa sisteminizde Python3 de kuruludur.Sisteminizdeki Python srmlerine ilikin daha kesin bir rapor iin ise u komutukullanabilirsiniz:ls -g {,/usr{,/local}}/bin | grep python

Buradan aldnz kty inceleyerek de sisteminizde birden fazla Python srmnn kuruluolup olmadn grebilirsiniz. [Bununla ilgili bir tartma iin bkz. http://goo.gl/RnRRc]Ayrca kullandnz GNU/Linux datmnda whereis python gibi bir komut vererek desistemde kurulu Python srmleri hakknda bilgi edinebilirsiniz.Eer sisteminizde Python3 kuruluysa ve siz de kurulu olan Python3 srmndenmemnunsanz herhangi bir ey yapmanza gerek yok. Farkl bir Python srm kurmayaalmadan yolunuza devam edebilirsiniz.3.1.2 Paket Deposundan KurulumSistemlerinde ntanml olarak herhangi bir Python3 srm kurulu olmayan veyasistemlerinde kurulu ntanml Python3 srmnden memnun olmayan GNU/Linuxkullanclarnn, Python3 elde etmek iin tercih edebilecei iki yol var: Birincisi ve benimsize nereceim yol, ncelikle kullandnz datmn paket yneticisini kontrol etmenizdir.Python3 sisteminizde kurulu olmasa bile, datmnzn depolarnda bu srm paketlenmihalde duruyor olabilir. O yzden sisteminize uygun bir ekilde paket yneticinizi aporada python kelimesini kullanarak bir arama yapmanz neririm. rnein UbuntuGNU/Linux datmnn paket depolarnda Python3 var. Dolaysyla Ubuntu kullanclar, eersistemlerinde zaten kurulu deilse (ki muhtemelen kuruludur), bu paketi Ubuntu YazlmMerkezi araclyla veya dorudan u komutla kurabilir:sudo apt-get install python3

Bu komut, Python3 btn bamllklar ile beraber bilgisayarnza kuracaktr.3.1.3 Kaynaktan KurulumPeki ya kullandnz datmn depolarnda Python3 yoksa veya depodaki Python3 srmeskiyse ve siz daha yeni bir Python3 srm kullanmak istiyorsanz ne yapacaksnz?Eer datmnzn depolarnda Python3 paketini bulamazsanz veya depodaki srm sizitatmin etmiyorsa, Python3 kaynaktan derlemeniz gerekecektir. Python3 kaynaktanderlerken iki seeneiniz var: Python3 root haklar ile kurmak veya Python3 yetkisizkullanc olarak kurmak. Normal artlar altnda eer kullandnz sistemde root haklarnasahipseniz Python3 yetkili kullanc olarak kurmanz tavsiye ederim.

3.1. GNU/Linux Kullanclar 9

http://goo.gl/RnRRc

Python 3 iin Trke Klavuz, Srm 3

root Haklar le KurulumPython kurmadan nce sistemimizde bulunmas gereken baz programlar var. Aslnda buprogramlar olmadan da Python kurulabilir, ancak eer bu programlar kurmazsanz Pythonnbaz zelliklerinden yararlanamazsnz. Bu programlar unlardr:1. tcl-dev2. tk-dev3. zlib1g-dev4. ncurses-dev5. libreadline-dev6. libdb-dev7. libgdbm-dev8. libzip-dev9. libssl-dev10. libsqlite3-dev11. libbz2-dev12. liblzma-devBu programlar, kullandnz GNU/Linux datmnn paket yneticisi araclylakurabilirsiniz. Yalnz paket adlarnn ve gerekli paket saysnn datmlar arasnda farkllkgsterebileceini unutmayn. Yukardaki liste Ubuntu iin geerlidir. Mesela yukarda tcl-devolarak verdiimiz paket ad baka bir datmda sadece tcl olarak geiyor ya da yukardakipaketlerin bazlar kullandnz datmda halihazrda kurulu olduu iin sizin daha azbamllk kurmanz gerekiyor olabilir.Ubuntuda yukardaki paketlerin hepsini u komutla kurabilirsiniz:sudo apt-get install tcl-dev tk-devzlib1g-dev ncurses-dev libreadline-devlibdb-dev libgdbm-dev libzip-dev libssl-devlibsqlite3-dev libbz2-dev liblzma-dev

Not: Farkl GNU/Linux datmlarnda, Python3 kaynaktan derleme ileminden ncehalihazrda kurulu olmas gereken paketlerin listesi iin http://goo.gl/zfLpX adresindekitabloyu inceleyebilirsiniz.Yukardaki programlar kurduktan sonra https://www.python.org/ftp/python/3.5.1 adresinegidiyoruz. Bu adreste, zerinde Python-3.5.1.tar.xz yazan balantya tklayarak sktrlmkurulum dosyasn bilgisayarmza indiriyoruz.Daha sonra bu sktrlm dosyay ayoruz. Alan klasrn iine girip, orada ilk olarak ukomutu veriyoruz:./configure

Bu komut, Python programlama dilinin sisteminize kurulabilmesi iin gereken hazrlkaamalarn gerekletirir. Bu betiin temel olarak yapt i, sisteminizin Pythonprogramlama dilinin kurulmasna uygun olup olmadn, derleme ilemi iin gereken10 Blm 3. Python Nasl Kurulur?

http://goo.gl/zfLpXhttps://www.python.org/ftp/python/3.5.1

Python 3 iin Trke Klavuz, Srm 3

yazlmlarn sisteminizde kurulu olup olmadn denetlemektir. Bu betik ayrca, bir sonrakiadmda gerekletireceimiz ina ileminin nasl yryeceini tarif eden Makefile adl birdosya da oluturur.Bu arada bu komutun bandaki ./ iareti, o anda iinde bulunduunuz dizinde yer alanconfigure adl bir betii altrmanz salyor. Eer yalnzca configure komutu verirseniz,iletim sistemi bu betii PATH dizinleri iinde arayacak ve bulamayaca iin de hataverecektir../configure komutu hatasz olarak tamamlandktan sonra ikinci olarak u komutu veriyoruz:make

Burada aslnda ./configure komutu ile oluan Makefile adl dosyay make adl bir programaraclyla altrm oluyoruz. make bir sistem komutudur. Bu komutu yukardaki gibiparametresiz olarak altrdmzda make komutu, o anda iinde bulunduumuz dizindebir Makefile dosyas arar ve eer byle bir dosya varsa onu altrr. Eer bir ncekiadmda altrdmz ./configure komutu baarsz olduysa, dizinde bir Makefile dosyasolumayaca iin yukardaki make komutu da almayacaktr. O yzden derleme ilemisrasnda verdiimiz komutlarn ktlarn takip edip, bir sonraki aamaya gemeden ncekomutun dzgn sonlanp sonlanmadndan emin olmamz gerekiyor.make komutunun yapt i, Python programlama dilinin sisteminize kurulmas esnasndasistemin eitli yerlerine kopyalanacak olan dosyalar ina edip oluturmaktr. Bu komutuntamamlanmas, kullandnz bilgisayarn kapasitesine bal olarak biraz uzun srebilir.make komutu tamamlandktan sonra, komut ktsnn son satrlarna doru yle bir uyarmesaj grebilirsiniz:Python build finished, but the necessary bitsto build these modules were not found: [buradaeksik olan modl veya modllerin adlar sralanr]

Burada Python, sistemimizde baz paketlerin eksik olduu konusunda bizi uyaryor. Uyarmesajnda bir veya daha fazla paketin eksik olduunu grebilirsiniz. Eer yleyse, eksikolduu bildirilen btn paketleri kurmamz gerekiyor.Gerekli paketi ya da paketleri kurduktan sonra make komutunu tekrar altryoruz. Endieetmeyin, make komutunu ikinci kez verdiimizde komutun tamamlanmas birincisi kadar uzunsrmez. Eer bu komutu ikinci kez altrdnzda yukardaki uyar mesaj kaybolduysa ukomutla yolunuza devam edebilirsiniz:sudo make altinstall

Daha nce kaynaktan program derlemi olan GNU/Linux kullanclarnn eli, makekomutundan sonra make install komutunu vermeye gitmi olabilir. Ama burada bizim makeinstall yerine make altinstall komutunu kullandmza dikkat edin. make altinstallkomutu, Python kurulurken klasr ve dosyalara srm numarasnn da eklenmesini salar.Bylece yeni kurduunuz Python, sistemdeki eski Python3 srmn silip zerine yazmamolur ve iki farkl srm yan yana varolabilir. Eer make altinstall yerine make installkomutunu verirseniz sisteminizde zaten varolan eski bir Python3 srmne ait dosya vedizinlerin zerine yazp silerek o srm kullanlamaz hale getirebilirsiniz. Bu da sistemdebeklenmedik problemlerin ortaya kmasna yol aabilir. Bu nemli ayrnty kesinlikle gzdenkarmamalsnz.Ayrca bkz.:

3.1. GNU/Linux Kullanclar 11

Python 3 iin Trke Klavuz, Srm 3

Python3n kaynaktan kurulumu ile ilgili bir tartma iin bkz.http://www.istihza.com/forum/viewtopic.php?f=50&t=544Derleme aamalarnn hibirinde herhangi bir hata mesaj almadysanz kurulum baarylagereklemi ve sisteminize Python programlama dilinin 3.x srm kurulmu demektir.Yetkisiz Kullanc Olarak KurulumElbette sudo make altinstall komutunu verip Python kurabilmek iin root haklarna sahipolmanz gerekiyor. Ama eer kullandnz sistemde bu haklara sahip deilseniz Python buekilde kuramazsnz. Kstl haklara sahip olduunuz bir sistemde Python ancak kendi evdizininize ($HOME) kurabilirsiniz.Eer Python yetkisiz kullanc olarak kuracaksanz, ncelikle yukarda bahsettiimiz Pythonbamllklarnn sisteminizde kurulu olup olmadn kontrol etmeniz lazm. Kullandnzsistemde herhangi bir Python srm halihazrda kuruluysa, bu bamllklar da muhtemelenzaten kuruludur. Ama deilse, bunlar kurmas iin ya sistem yneticisine ricadabulunacaksnz, ya da bu bamllklar da tek tek kendi ev dizininize kuracaksnz. Eer sistemyneticisini bu bamllklar kurmaya ikna edemezseniz, internet zerinden bulabileceinizbilgiler yardmyla bu bamllklar tek tek elle kendiniz kurabilirsiniz. Ancak bu ilemin epeyzaman alacan ve sre srasnda pek ok baka bamllkla da karlacanz syleyebilirim.O yzden ne yapp edip sistem yneticisini bamllklar kurmaya ikna etmenizi tavsiyeederim... Tabii sistem yneticisini bu bamllklar kurmaya ikna edebilirseniz, istediinizPython srmn de kurmaya ikna edebileceinizi dnebiliriz! Ama biz burada sizinPython kendinizin kuracan varsayarak yolumuza devam edelim.Python yetkisiz olarak kurmak, root haklaryla kurmaya ok benzer. Aralarnda yalnzcabir-iki ufak fark vardr. Mesela Python yetkisiz kullanc olarak kurarken, ./configurekomutunu u ekilde vermeniz gerekiyor:./configure --prefix=$HOME/python

Python root haklaryla kurduunuzda Python /usr dizini altna kurulacaktr. Ancak sizyetkisiz kullanc olduunuz iin /usr dizinine herhangi bir ey kuramazsnz. te bu yzden,configure betiine verdiimiz prefix parametresi yardmyla Python, yazma yetkimiz olanbir dizine kuruyoruz. Mesela yukardaki komut Pythonn /usr dizinine deil, ev dizininiz iindepython adl bir klasre kurulmasn salayacaktr. Elbette siz python yerine farkl bir dizinad da belirleyebilirsiniz. Burada nemli olan nokta, prefix parametresine vereceiniz dizinadnn, sizin yazmaya yetkili olduunuz bir dizin olmasdr.Bu komutu altrdktan sonra make komutunu normal bir ekilde veriyoruz. Bunun ardndanda make install (veya duruma gre make altinstall) komutuyla Python ev dizinimizekuruyoruz. Burada make install komutunu sudosuz kullandmza dikkat edin. nk,dediimiz gibi, siz yetkili kullanc olmadnz iin sudo komutunu kullanamazsnz.Python bu ekilde ev dizininiz altnda bir klasre kurduunuzda Python ile ilgili btndosyalarn bu klasr iinde yer aldn greceksiniz. Bu klasr dikkatlice inceleyip neyinnerede olduuna ainalk kazanmaya aln. Eer mmknse root haklar ile kurulmu birPython srmn inceleyerek, dosyalarn iki farkl kurulum trnde nerelere kopyalandnkarlatrn.Bylece Python programlama dilini bilgisayarmza nasl kuracamz renmi olduk.Ama bu noktada bir uyar yapmadan gemeyelim: Python zellikle baz GNU/Linuxdatmlarnda pek ok sistem aracyla sk skya balantldr. Yani Python, kullandnz

12 Blm 3. Python Nasl Kurulur?

http://www.istihza.com/forum/viewtopic.php?f=50&t=544

Python 3 iin Trke Klavuz, Srm 3

datmn belkemii durumunda olabilir. Bu yzden Python kaynaktan derlemek bazriskler tayabilir. Eer yukarda anlatld ekilde, kaynaktan Python derleyecekseniz, karkarya olduunuz risklerin farknda olmalsnz. Ayrca GNU/Linux zerinde kaynaktanprogram derlemek konusunda tecrbeli deilseniz ve eer yukardaki aklamalar size kafakartrc geliyorsa, mesela Ben bu komutlar nereye yazacam? diye bir soru geiyorsaaklnzdan, kesinlikle datmnzla birlikte gelen Python srmn kullanmalsnz. Pythonsrmlerini baa ba takip ettii iin, ben size Ubuntu GNU/Linuxu denemenizi nerebilirim.Ubuntunun depolarnda Pythonn en yeni srmlerini rahatlkla bulabilirsiniz. Ubuntununresmi sitesine ubuntu.com adresinden, yerel Trkiye sitesine ise forum.ubuntu-tr.netadresinden ulaabilirsiniz. Eer u anda kullandnz GNU/Linux datmndan vazgemekistemiyorsanz, sabit diskinizden kk bir blm ayrp bu blme sadece Pythonalmalarnz iin Ubuntu datmn da kurmay tercih edebilirsiniz.Yalnz kk bir uyar daha yapalm. Kaynaktan kurulum ile ilgili bu sylediklerimizden,Pythonn GNU/Linuxa kesinlikle kaynaktan derlenerek kurulmamas gerektii anlamkmamal. Yukardaki uyarlarn amac, kullancnn Python kaynaktan derlerken sadecebiraz daha dikkatli olmas gerektiini hatrlatmaktr. rnein bu satrlarn yazar, kullandUbuntu sisteminde Python3 kaynaktan derleyerek kullanmay tercih ediyor ve herhangi birproblem yaamyor.Bu nemli uyarlar da yaptmza gre gnl rahatlyla yolumuza devam edebiliriz.Kurduumuz yeni Python nasl altracamz biraz sonra greceiz. Ama nce Windowskullanclarnn Python3 nasl kuracaklarna bakalm.

3.2 Windows KullanclarWindows srmlerinin hibirinde Python kurulu olarak gelmez. O yzden Windowskullanclar, Python sitesinden indirip kuracak.Bunun iin ncelikle http://www.python.org/downloads adresine gidiyoruz.Bu adrese gittiinizde, zerinde Download Python 3.5.1 ve Download 2.7.11 yazan, yan yanaiki dme greceksiniz. Daha nce de sylediimiz gibi, eer bir Python srm numaras 2ile balyorsa o srm 2.x serisine, yok eer 3 ile balyorsa 3.x serisine aittir. Dolaysyla ilkdme Python3 srmn, ikinci dme ise Python2 srmn ierir.Biz bu kitapta Pythonn 3.x serisini anlatacamz iin (yeni Python srmleri ktndao dmeler zerinde yazan srm numaralar deiecek de olsa), 3 ile balayan srmnumarasn ieren dmeye tklamaya zen gsteriyoruz. Bu dmeye tkladnzdabilgisayarnza .exe uzantl kurulum dosyas inecek. Bu dosyaya ift tklayarak kurulumprogramn balatabilirsiniz.Not: Eer indireceiniz Python srmnn mimarisini ve srmn kendinizsemek isterseniz https://www.python.org/ftp/python/3.5.1 adresinden kendinize uygun olansrm bulup indirebilirsiniz.Kurulum dosyasna ift tkladnzda karnza ilk gelen ekranda, pencerenin alt tarafnda ukutucuklar greceksiniz:1. Install launcher for all users (recommended)2. Add Python 3.5 to PATH

3.2. Windows Kullanclar 13

http://www.ubuntu.comhttp://forum.ubuntu-tr.net/http://www.python.org/downloadshttps://www.python.org/ftp/python/3.5.1

Python 3 iin Trke Klavuz, Srm 3

Burada ilk kutucuk zaten seilidir. Bunu bu ekilde brakabilirsiniz. kinci kutucuk isePython yola eklememizi, bylece yalnzca python komutu vererek Python balatabilmemizisalayacak. O yzden oradaki ikinci kutucuu da iaretliyoruz.Ayn pencerenin st tarafnda ise u seenekleri greceksiniz:1. -> Install Now2. -> Customize Installation

Burada Install Now yazan ksma tklayarak kurulumu balatyoruz.Eer Pythonn bilgisayarda nereye kurulacan ve baka birtakm kurulum zelliklerinideitirmek istiyorsanz Customize Installation yazl ksma tklayabilirsiniz. Ben bu kitaptasizin Install Now yazan ksma tklayarak kurulum yaptnz varsayacam.Not: Pythonn resmi sitesinde dolarken kurulum dosyalar arasnda, web-based installer(web tabanl kurulum betii) adl bir kurulum dosyas grebilirsiniz. Bu kurulum dosyas,Pythonn almas iin gereken dosyalar kurulum esnasnda internetten indirip kuran,1MBdan kk bir kurulum program ierir. Dolaysyla eer kurulumu bu dosyadanyapacaksanz, kesintisiz bir internet balantsna ihtiyacnz olacak.Uyar: Eer Windowsta Python kurmaya alrken hata alyorsanz, muhtemelen iletimsisteminiz gncel deildir. rnein Windows 7de Python kurabilmeniz iin, SP1 (ServicePack 1) kurulu olmaldr. Windows gncellemelerini kurduktan sonra Python kurmaytekrar deneyin.

3.3 Python Kurulum ve alma DiziniPython programlama dilini, kullandmz iletim sistemine nasl kurabileceimizi bilmekkadar nemli bir konu da Python hangi dizine kurduumuzu bilmektir. Zira programclkmaceramz boyunca karlaacamz baz sorunlar, Pythonn kurulu olduu dizine gitmemizigerektirecek, stelik kendi yazdmz baz programlarda da Pythonn kurulu olduu dizindeeitli ilemler yapmak ihtiyac duyacaz. Ayrca baz durumlarda, o anda alan Pythonsrmnn hangi konumdan altn tespit etmemiz de gerekebilir.te bu sebeplerden, Pythonn hangi dizine kurulduunu mutlaka biliyor olmamz lazm.Pythonn, iletim sisteminizde hangi dizine kurulduu, Python nasl kurduunuza balolarak farkllk gsterir.GNU/Linux datmlarnda Python genellikle /usr/lib/python3.5 dizininde kurulur. Amaelbette, eer siz Python kaynaktan derlediyseniz, derleme srasnda configure betiineverdiiniz prefix parametresi yardmyla Pythonn kurulum dizinini kendiniz de belirlemiolabilirsiniz.Windowsta Python programlama dilini aynen bu kitapta gsterdiimiz ekilde kurduysanz,Python %LOCALAPPDATA%\Programs\Python dizini iine kurulacaktr. Ancak eer kurulumpenceresinde Customize Installation dmesine basarak kurulumu zelletirdiysenizve Install for all users seeneini iaretlediyseniz Python %PROGRAMFILES% veya%PROGRAMFILES(x86) adl evre deikenlerinin iaret ettii dizin iine kurulacaktr.

14 Blm 3. Python Nasl Kurulur?

BLM 4

Python Nasl altrlr?

Bir nceki blmde, Python farkl platformlara nasl kuracamz btn ayrntlarylaanlattk. Bu blmde ise kurduumuz bu Python programn hem GNU/Linuxta hem deWindowsta nasl altracamz greceiz. ncelikle GNU/Linux kullanclarnn Pythonnasl altracana bakalm.

4.1 GNU/Linux KullanclarGeen blmlerde grdnz gibi, Python3 GNU/Linux sistemleri zerine farkl ekillerdekurabiliyoruz. Bu blmde, her bir kurulum tr iin Python3n nasl altrlacan ayrayr inceleyeceiz.4.1.1 Kurulu Python3 KullananlarEer sisteminizde zaten Python3 kurulu ise komut satrnda yalnzca u komutu vererekPython3 balatabilirsiniz:python

Ancak daha nce de dediimiz gibi, 20.04.2016 tarihi itibariyle pek ok GNU/Linuxdatmnda ntanml olarak Python2 kuruludur. Dolaysyla python komutunu verdiinizdealan srm muhtemelen Python2 olacaktr. Bu yzden sistemimizde ntanml olarakhangi srmn kurulu olduuna ve python komutunun hangi srm balattna ok dikkatetmelisiniz.Yine daha nce de sylediimiz gibi, sisteminizde hem Python2 hem de Python3 zatenkurulu durumda olabilir. O yzden yukardaki komutu bir de python3 eklinde vermeyideneyebilirsiniz.rnein Ubuntu GNU/Linux datmnn 12.10 srmnden itibaren python komutuPython2yi; python3 komutu ise Python3 altryor.4.1.2 Python3 Depodan KuranlarDediimiz gibi, 20.04.2016 tarihi itibariyle GNU/Linux datmlarnda ntanml Pythonsrm arlkl olarak Python2dir. Dolaysyla python komutu Pythonn 2.x srmlerinialtrr. Bu durumdan tr, herhangi bir akmay nlemek iin GNU/Linux datmlarPython3 paketini farkl bir ekilde adlandrma yoluna gider. u anda piyasada bulunan

15

Python 3 iin Trke Klavuz, Srm 3

datmlarn ezici ounluu Python3 paketini python3 eklinde adlandryor. O yzdenGNU/Linux kullanclar, eer paket yneticilerini kullanarak Python kurulumu gerekletirmiiseler, komut satrnda u komutu vererek Python3 balatabilirler:python3

Bu komutun ardndan una benzer bir ekranla karlam olmalsnz:istihza@ubuntu:~$ # python3 Python 3.5.1 (default, 20.04.2016, 12:24:55) [GCC 4.4.720120313 (Red Hat 4.4.7-3)] on linux Type help, copyright, credits or license for moreinformation. >>>Eer yukardaki ekran grdyseniz Pythonla programlama yapmaya hazrsnz demektir.Deilse, geriye dnp ilerin nerede ters gittiini bulmaya alabilirsiniz.Bu aamada ilerin nerede ters gitmi olabileceine dair birka ipucu verelim:1. Python3 kurulurken paket yneticinizin herhangi bir hata vermediinden, programnsisteminize baaryla kurulduundan emin olun. Bunun iin Python3n kurulu paketlerlistesinde grnp grnmediini denetleyebilirsiniz.2. python3 komutunu doru verdiinize emin olun. Python programlama diline zellikleyeni balayanlarn en sk yapt hatalardan biri python kelimesini yanl yazmaktr.Python yerine yanllkla pyhton, pyton veya phyton yazm olabilirsiniz. Ayrca python3komutunun tamamen kk harflerden olutuuna dikkat edin. Python ve pythonbilgisayar asndan ayn eyler deildir.3. Kullandnz datmn Python3 paketini adlandrma politikas yukarda anlattmzdanfarkl olabilir. Yani sizin kullandnz datm, belki de Python3 paketini farkl bir ekildeadlandrmtr. Eer durum byleyse, datmnzn yardm kaynaklarn (wiki, forum, irc,yardm belgeleri, kullanc listeleri, vb.) kullanarak ya da istihza.com/forum adresindesorarak Python3n nasl altrlacan renmeyi deneyebilirsiniz.

Gelelim Python3 kaynaktan derlemi olanlarn durumuna...4.1.3 Python3 root Olarak DerleyenlerEer Python3 nceki blmlerde anlattmz ekilde kaynaktan root haklar ilederlediyseniz python3 komutu almayacaktr. Bunun yerine u komutu kullanmanzgerekecek:python3.5

Not: Kurduunuz Python3 srmnn 3.5 olduunu varsayyorum. Eer farkl birPython3 srm kurduysanz, elbette balatc komut olarak o srmn adn kullanmanzgerekecektir. Mesela: python3.0 veya python3.1. Bu arada python3.5 komutunda 35saysnn rakamlar arasnda bir adet nokta iareti olduunu gzden karmyoruz...Tpk paket deposundan kurulumda olduu gibi, eer yukardaki komut Python altrmanzsalamyorsa, kurulum esnasnda baz eyler ters gitmi olabilir. rnein kaynaktankurulumun herhangi bir aamasnda bir hata alm olabilirsiniz ve bu da Pythonnkurulumunu engellemi olabilir.Grdnz gibi, Python kaynaktan derleyenler Python programlama dilini altrabilmekiin Pythonn tam srm adn belirtiyor. Dilerseniz bu ekilde almaya devam edebilirsiniz.Bunun hibir sakncas yok. Ancak ben size kolaylk asndan, /usr/bin/ dizini altna py316 Blm 4. Python Nasl altrlr?

http://www.istihza.com/forum

Python 3 iin Trke Klavuz, Srm 3

adnda bir sembolik ba yerletirmenizi tavsiye ederim. Bylece sadece py3 komutunuvererek Python3 balatabilirsiniz.Peki bunu nasl yapacaz?Python kaynaktan derlendiinde altrlabilir dosya /usr/local/bin/ dizini iine Python3.5(veya kurduunuz Python3 srmne bal olarak Python3.0 ya da Python3.1 ) adylakopyalanr. Bu nedenle Python3 altrabilmek iin python3.5 komutunu kullanmamzgerekir. Python3 altrabilmek iin mesela sadece py3 gibi bir komut kullanmak istiyorsakyapacamz tek ey /usr/local/bin/ dizini iindeki python3.5 adl dosyaya /usr/bin dizinialtndan, py3 adl bir sembolik ba oluturmak olacaktr. Bunun iin ln komutunukullanacaz:ln -s /usr/local/bin/python3.5 /usr/bin/py3

Tabii bu komutu yetkili kullanc olarak vermeniz gerektiini sylememe herhalde gerekyoktur. Bu komutu verdikten sonra artk sadece py3 komutu ile Python programlama dilinibalatabilirsiniz.ok nemli Bir UyarBir nceki admda anlattmz gibi Python3 resmi sitesinden indirip kendiniz derlediniz.Gayet gzel. Ancak bu noktada ok nemli bir konuya dikkatinizi ekmek isterim. En batanberi sylediimiz gibi, Python programlama dili GNU/Linux iletim sistemlerinde ok nemlibir yere sahiptir. yle ki bu programlama dili, kullandnz datmn belkemii durumundaolabilir.rnein Ubuntu GNU/Linux datmnda pek ok sistem arac Python ile yazlmtr. Buyzden, sistemdeki ntanml Python srmnn ne olduu ve dolaysyla python komutununhangi Python srmn altrd ok nemlidir. nk sisteminizdeki hayati baz aralar,python komutunun altrd Python srmne bel balam durumdadr. Dolaysyla sizinbu python komutunun altrd Python srmne dokunmamanz gerekir.Mesela eer kullandnz iletim sisteminde python komutu Pythonn 2.x srmlerindenbirini altryorsa sembolik balar veya baka aralar vastasyla python komutunu Pythonnbaka bir srmne balamayn. Bu ekilde btn sistemi kullanlmaz hale getirirsiniz.Elbette eer kurulum aamasnda tarif ettiimiz gibi, Python3 make install yerine makealtinstall komutu ile kurmaya zen gsterdiyseniz, sonradan oluturduunuz ba dosyasnsilip python komutunu yine sistemdeki ntanml srme balayabilirsiniz. Bu ekilde herey yine eski haline dner. Ama eer Python make install komutuyla kurmanzdan trsistemdeki ntanml Python srmne ait dosyalar kaybettiyseniz sizin iin yaplacak fazlabir ey yok... Sistemi tekrar eski kararl haline getirmek iin kan, ter ve gzya dkeceksiniz...Ayn ekilde, kullandnz datmda python3 komutunun ntanml olarak belirli birPython srmn balatp balatmad da nemlidir. Yukarda python komutu ile ilgilisylediklerimiz python3 ve buna benzer baka komutlar iin de aynen geerli.rnein, Ubuntu GNU/Linux datmnda python komutu sistemde kurulu olan Python 2.xsrmn; python3 komutu ise sistemde kurulu olan Python 3.x srmn altrdndan,biz kendi kurduumuz Python srmleri iin, sistemdeki srmlerle akmayacak isimlersetik. Mesela kendi kurduumuz Python3 srmn altrmak iin py3 gibi bir komut tercihettik.yi bir test olarak, Python programlama dilini kendiniz kaynaktan derlemeden nce ukomutun ktsn iyice inceleyebilirsiniz:

4.1. GNU/Linux Kullanclar 17

Python 3 iin Trke Klavuz, Srm 3

ls -g {,/usr{,/local}}/bin | grep python

Bu komut iki farkl Python srmnn kurulu olduu sistemlerde una benzer bir kt verir(kt krplmtr):dh_python2dh_python3pdb2.7 -> ../lib/python2.7/pdb.pypdb3.2 -> ../lib/python3.2/pdb.pypy3versions -> ../share/python3/py3versions.pypython -> python2.7python2 -> python2.7python2.7python3 -> python3.2python3.2 -> python3.2mupython3.2mupython3mu -> python3.2mupyversions -> ../share/python/pyversions.py

Yatk harflerle gsterdiimiz ksmlara dikkat edin. Grdnz gibi python ve python2komutlar bu sistemde Pythonn 2.7 srmn altryor. python3 komutu ise Pythonn 3.2srmn... Dolaysyla yukardaki kty aldmz bir sistemde kendi kurduumuz Pythonsrmlerine python, python2 veya python3 gibi isimler vermekten kanmalyz.Szn z, bir GNU/Linux kullancs olarak sistemdeki ntanml hibir Python srmnsilmemeli, ntanml srme ulaan komutlar deitirmemelisiniz. Eer mesela sisteminizdepython3 komutu halihazrda bir Python srmn altryorsa, siz yeni kurduunuz Pythonsrmne ulamak iin ntanml adla akmayacak baka bir komut ad kullann. Yanirnein sisteminizde python3 komutu Pythonn 3.2 srmn altryorsa, siz yenikurduunuz srm altrmak iin py3 gibi bir sembolik ba oluturun. Brakn ntanmlkomut (python, python3 vb.) ntanml Python srmn altrmaya devam etsin.Asla unutmayn. Siz bir programc aday olarak, program yazacanz iletim sistemini enineboyuna tanmakla ykmlsnz. Dolaysyla iletim sisteminizi kararsz hale getirecekdavranlar bilmeli, bu davranlardan kanmal, yanl bir ilem yaptnzda da nasl geridneceinizi bilmelisiniz. Hele ki bir program kaynaktan derlemeye karar vermiseniz...Bu ciddi uyary da yaptmza gre gnl rahatlyla yolumuza devam edebiliriz.4.1.4 Python3 Ev Dizinine KuranlarEer Python3 kstl kullanc haklar ile derleyip ev dizininize kurduysanz yukardakikomutlar Python altrmanz salamayacaktr. Python3 ev dizinine kurmu olankullanclar Python3 altrabilmek iin, ncelikle komut satr araclyla Python3kurduklar dizine, oradan da o dizin altndaki bin/ klasrne ulaacak ve orada u komutuverecek:./python3.5

Diyelim ki Python3 $HOME/python adl dizine kurdunuz. nce u komutla$HOME/python/bin adl dizine ulayoruz:cd $HOME/python/bin

18 Blm 4. Python Nasl altrlr?

Python 3 iin Trke Klavuz, Srm 3

Ardndan da u komutu veriyoruz:./python3.5

Not: Komutun bandaki ./ iaretinin ne ie yaradn artk adnz gibi biliyorsunuz...Not: Elbette ben burada kurduunuz Python srmnn 3.5 olduunu varsaydm. Eerfarkl bir srm kurduysanz yukardaki komutu ona gre yazmanz gerekiyor.Eer isterseniz bu ekilde almaya devam edebilirsiniz. Ancak her defasnda Pythonnkurulu olduu dizin altna gelip orada ./python3.5 komutunu altrmak bir sre sonraeziyete dnecektir. lerinizi kolaylatrmak iin u ilemleri takip etmelisiniz:1. ev dizininizin altnda bulunan .profile (veya kullandnz datma gre .bash_profile ya da.bashrc ) adl dosyay an.2. Bu dosyann en sonuna una benzer bir satr yerletirerek Python altrmamz salayandosyann bulunduu dizini yola ekleyin:

export PATH=$PATH:$HOME/python/bin/

3. $HOME/python/bin/ satr Python3n altrlabilir dosyasnn hangi dizin altndaolduunu gsteriyor. Ben burada Python3n altrlabilir dosyasnn $HOME/python/bindizini iinde olduunu varsaydm. O yzden de $HOME/python/bin/ gibi bir satr yazdm.Ama eer Python3n altrlabilir dosyas sizde farkl bir dizindeyse bu satr ona greyazmalsnz.4. Kendi sisteminize uygun satr dosyaya ekledikten sonra dosyay kaydedip kn. Dosyadayaptmz deiikliin etkin hale gelebilmesi iin u komutu verin:

source .profile

Elbette eer sizin sisteminizdeki dosyann ad .bash_profile veya .bashrc ise yukardakikomutu ona gre deitirmelisiniz.5. Daha sonra $HOME/python/bin/python3.5 adl dosyaya $HOME/python/bin/ dizinialtndan mesela py3 gibi bir sembolik ba verin:

ln -s $HOME/python/bin/python3.5 $HOME/python/bin/py3

6. Bilgisayarnz yeniden balatn.7. Artk hangi konumda bulunursanz bulunun, u komutu vererek Python3 balatabilirsiniz:

py3

Burada da eer yukardaki komut Python3 altrmanz salamyorsa, baz eylerieksik veya yanl yapm olabilirsiniz. Yardm almak iin istihza.com/forum adresineurayabilirsiniz.Python3 baaryla kurup altrabildiinizi varsayarak yolumuza devam edelim.4.1.5 GNU/Linuxta Farkl Srmleri Birlikte KullanmakDaha nce de dediimiz gibi, u anda piyasada iki farkl Python serisi bulunuyor: Python2 vePython3. ok uzun zamandan beri kullanmda olduu iin, Python2 Python3e kyasla daha

4.1. GNU/Linux Kullanclar 19

http://www.istihza.com/forum

Python 3 iin Trke Klavuz, Srm 3

yaygn. Eer hem Python2 ile yazlm programlar altrmak, hem de Python3 ile gelitirmeyapmak istiyorsanz, sisteminizde hem Python2yi hem de Python3 ayn anda bulundurmaytercih edebilirsiniz. Peki bunu nasl yapacaksnz?En bata da sylediimiz gibi, hemen hemen btn GNU/Linux datmlarnda Python2 kuruluolarak gelir. Dolaysyla eer sisteminize ek olarak Python3 de kurduysanz (kaynaktanveya paket deposundan), baka herhangi bir ey yapmanza gerek yok. Yukarda anlattmzynergeleri takip ettiyseniz, konsolda python komutu verdiinizde Python2 alacak, python3(veya py3) komutunu verdiinizde ise Python3 alacaktr.Ama eer sisteminizde Python2 bile kurulu deilse, ki bu ok ok dk bir ihtimaldir,Python2yi paket yneticiniz yardmyla sisteminize kurabilirsiniz. u anda piyasada olup dapaket deposunda Python bulundurmayan GNU/Linux datm pek azdr.GNU/Linuxta Python nasl altracamz ve farkl Python srmlerini bir arada naslkullanacamz rendiimize gre, Windows kullanclarnn durumuna bakabiliriz.

4.2 Windows KullanclarWindows kullanclar Python3 iki ekilde balatabilir:1. Balat > Tm Programlar > Python3.5> Python (Command Line) yolunu takip ederek.2. Komut satrnda python komutunu vererek.

Eer birinci yolu tercih ederseniz, Pythonn size sunduu komut satrna dorudan ulamolursunuz. Ancak Python komut satrna bu ekilde ulatnzda baz kstlamalarla karkarya kalrsnz. Dorudan Pythonn komut satrna ulamak yerine nce MS-DOS komutsatrna ulap, oradan Python komut satrna ulamak zellikle ileride yapacanz almalarasndan ok daha mantkl olacaktr. O yzden komut satrna bu ekilde ulamak yerineikinci seenei tercih etmenizi tavsiye ederim. Bunun iin nceki blmlerde gsterdiimizekilde komut satrna ulan ve orada u komutu altrn:python

Bu komutu verdiinizde una benzer bir ekranla karlaacaksnz:C:\Users\istihza> python3 Python 3.5.1 (v3.5.1:c0e311e010fc, 20.04.2016, 12:24:55) [MSCv.1600 32 bit (Intel)] on win32 Type help, copyright, credits or license for moreinformation. >>>Eer bu komut yukardakine benzer bir ekran yerine bir hata mesaj verdiyse kurulumsrasnda baz admlar eksik veya yanl yapm olabilirsiniz. Yukardaki komutalmyorsa, muhtemelen kurulum srasnda Add python3.5 to path kutucuunuiaretlemeyi unutmusunuzdur. Eer yleyse, kurulum dosyasn tekrar altrp, ilgili admgerekletirmeniz veya Python kendiniz YOLa eklemeniz gerekiyor.python komutunu baaryla altrabildiinizi varsayarak yolumuza devam edelim.4.2.1 Windowsta Farkl Srmleri Birlikte KullanmakDaha nce de dediimiz gibi, u anda piyasada iki farkl Python serisi bulunuyor: Python2 vePython3. ok uzun zamandan beri kullanmda olduu iin, Python2 Python3e kyasla dahayaygn. Eer hem Python2 ile yazlm programlar altrmak, hem de Python3 ile gelitirme

20 Blm 4. Python Nasl altrlr?

Python 3 iin Trke Klavuz, Srm 3

yapmak istiyorsanz, sisteminizde hem Python2yi hem de Python3 ayn anda bulundurmaytercih edebilirsiniz. Peki bunu nasl yapacaksnz?Windowsta bu ilemi yapmak ok kolaydr. python.org/download adresine giderek farklPython srmlerini bilgisayarnza indirebilir ve bunlar bilgisayarnza normal bir ekildekurabilirsiniz. Bu ekilde sisteminize istediiniz sayda farkl Python srm kurabilirsiniz.Peki bu farkl srmlere nasl ulaacaksnz?Python, bilgisayarmzdaki farkl Python srmlerini altrabilmemiz iin bize py adl zelbir program sunar.Not: Py program yalnzca Windowsa zgdr. GNU/Linuxta byle bir program bulunmaz.Py programn altrmak iin, daha nce gsterdiimiz ekilde sistem komut satrnaulayoruz ve orada u komutu veriyoruz:py

Bu komutu verdiinizde (teorik olarak) sisteminize en son kurduunuz Python srmalmaya balayacaktr. Ancak bu her zaman byle olmayabilir. Ya da aldnz ktbeklediiniz gibi olmayabilir. O yzden bu komutu verdiinizde hangi srmn baladnadikkat edin.Eer sisteminizde birden fazla Python srm kurulu ise, bu betik yardmyla istediinizsrm balatabilirsiniz. Mesela sisteminizde hem Pythonn 2.x srmlerinden biri, hem dePythonn 3.x srmlerinden biri kurulu ise, u komut yardmyla Python 2.xi balatabilirsiniz:py -2

Python 3.xi balatmak iin ise u komutu veriyoruz:py -3

Eer sisteminizde birden fazla Python2 veya birden fazla Python3 srm kurulu ise, ana vealt srm numaralarn belirterek istediiniz srme ulaabilirsiniz:py -2.6

py -2.7

py -3.4

py -3.5

Bu arada dikkat ettiyseniz, Python programlarn balatabilmek iin hem python hem de pykomutunu kullanma imkanna sahibiz. Eer sisteminizde tek bir Python srm kurulu ise,Python balatmak iin python komutunu kullanmak isteyebilir, farkl srmlerin bir aradabulunduu durumlarda ise py ile bu farkl srmlere tek tek erimek isteyebilirsiniz.Bylece Pythonla ilgili en temel bilgileri edinmi olduk. Bu blmde rendiklerimizsayesinde Python programlama dilini bilgisayarmza kurabiliyor ve bu programlama dilinibaaryla altrabiliyoruz.

4.2. Windows Kullanclar 21

http://www.python.org/download/

Python 3 iin Trke Klavuz, Srm 3

4.3 Hangi Komut Hangi Srm altryor?Artk Python programlama dilinin bilgisayarmza nasl kurulacan ve bu programlamadilinin nasl altrlacan biliyoruz. Ancak konunun neminden tr, tekrar vurgulayp,cevabn bilip bilmediinizden emin olmak istediimiz bir soru var: Kullandnz iletimsisteminde acaba hangi komut, hangi Python srmn altryor?Bu kitapta anlattmz farkl yntemleri takip ederek, Python programlama dilinibilgisayarnza farkl ekillerde kurmu olabilirsiniz. rnein Python programlama dilini,kullandnz GNU/Linux datmnn paket yneticisi araclyla kurduysanz, Pythonbalatmak iin python3 komutunu kullanmanz gerekebilir. Ayn ekilde, eer PythonWindowsa kurduysanz, bu programlama dilini altrmak iin python komutunu kullanyorolabilirsiniz. Btn bunlardan farkl olarak, eer Pythonn kaynak kodlarn sitesinden indiripderlediyseniz, Python altrmak iin kendi belirlediiniz bambaka bir ad da kullanyorolabilirsiniz. rnein belki de Python altrmak iin py3 gibi bir komut kullanyorsunuzdur...Python programlama dilini altrmak iin hangi komutu kullanyor olursanz olun, ltfen birsonraki konuya gemeden nce kendi kendinize u sorular sorun:1. Kullandm iletim sisteminde Python program halihazrda kurulu mu?2. Kullandm iletim sisteminde toplam ka farkl Python srm var?3. python komutu bu Python srmlerinden hangisini altryor?4. python3 komutu alyor mu?5. Eer alyorsa, bu komut Python srmlerinden hangisini altryor?6. Kaynaktan derlediim Python srmn altrmak iin hangi komutu kullanyorum?

Biz bu kitapta unlar varsayacaz:1. Kullandnz iletim sisteminde Pythonn 2.x srmlerini python komutuylaaltryorsunuz.2. Kullandnz iletim sisteminde Pythonn 3.x srmlerini python3 komutuylaaltryorsunuz.

Bu kitaptan yararlanrken, bu varsaymlar gz nnde bulundurmal, eer bunlardan farklkomutlar kullanyorsanz, kodlarnz ona gre ayarlamalsnz.

4.4 Sistem Komut Satr ve Python Komut SatrBuraya kadar Python programlama dilini nasl altracamz konusundaki btn bilgileriedindik. Ancak programlamaya yeni balayanlarn ok sk yapt bir hata var: Sistem komutsatr ile Python komut satrn birbirine kartrmak.Asla unutmayn, kullandnz iletim sisteminin komut satr ile Pythonn komut satrbirbirinden farkl iki ortamdr. Yani Windowsta cmd, Ubuntuda ise Ctrl+Alt+T ile ulatnzortam sistem komut satr iken, bu ortam ap python3 (veya python ya da py3) komutuvererek ulatnz ortam Pythonn komut satrdr. Sistem komut satrnda sistem komutlar(mesela cd, ls, dir, pwd) verilirken, Python komut satrnda, biraz sonra renmeyebalayacamz Python komutlar verilir. Dolaysyla python3 (veya python ya da py3)komutunu verdikten sonra ulatnz ortamda cd Desktop ve ls gibi sistem komutlarnkullanmaya almanz sizi hsrana uratacaktr.22 Blm 4. Python Nasl altrlr?

BLM 5

Etkileimli Python

u ana kadar rendiklerimiz sayesinde Python programlama dilinin farkl sistemlerenasl kurulacan ve nasl altrlacan biliyoruz. Dolaysyla Python bir ncekiblmde anlattmz ekilde altrdmz zaman una benzer bir ekranla karlaacamznfarkndayz:istihza@ubuntu:~$ # python3 Python 3.5.1 (default, 20.04.2016, 12:24:55) [GCC 4.4.720120313 (Red Hat 4.4.7-3)] on linux Type help, copyright, credits or license for moreinformation. >>>Biz imdiye kadar bu ekrana Python komut satr demeyi tercih ettik. Dilerseniz bundansonra da bu ad kullanmaya devam edebilirsiniz. Ancak teknik olarak bu ekrana etkileimlikabuk (interactive shell ) ad verildiini bilmemizde fayda var. Etkileimli kabuk, bizim Pythonprogramlama dili ile iliki kurabileceimiz, yani onunla etkileebileceimiz bir st katmandr.Etkileimli kabuk, asl programmz iinde kullanacamz kodlar deneme imkan sunar bize.Buras bir nevi test alan gibidir. rnein bir Python kodunun alp almadn denemekveya nasl altn, ne sonu verdiini grmek istediimizde bu ekran son derece faydal birara olarak karmza kar. Bu ortam, zellikle Pythona yeni balayanlarn bu programlamadiline ainalk kazanmasn salamas asndan da bulunmaz bir aratr. Biz de bu blmdeetkileimli kabuk zerinde baz almalar yaparak, Pythona alma turlar atacaz.Bu arada, geen blmde sylediimiz gibi, bu ortamn sistem komut satr adn verdiimizortamdan farkl olduunu aklmzdan karmyoruz. O zaman da dediimiz gibi, sistem komutsatrnda sistem komutlar, Python komut satrnda (yani etkileimli kabukta) ise Pythonkomutlar verilir. Mesela echo %PATH%, cd Desktop, dir ve ls birer sistem komutudur. Eerbu komutlar etkileimli kabukta vermeye kalkrsanz, bunlar birer Python komutu olmadiin, Python size bir hata mesaj gsterecektir. Mesela Pythonn etkileimli kabuunda cdDesktop