istihza python pdf / One moment, please...

Istihza Python Pdf

istihza python pdf

yazbel/python-istihza

https://python-istihza.yazbel.com

Bu belgeler Python programlama dilinin 3. sürümünü anlatmaktadır. Aslen istihza.com'da yer alan, Fırat Özgül'ün yazdığı Python 3 belgelerinden oluşturulmuştur ve şu anda topluluk tarafından geliştirilmektedir.

Belgeler neden buraya kopyalandı?

Bu belgeler buraya kopyalanmadan bir süre önce Fırat Özgül, istihza.com projesinin sonlanacağını istihza.com forumunda duyurdu. Proje sonlandığında elbette belgeler kaybolmayacak; internette bir yerlerde bulunabilir olacaklar. istihza.com topluluğu da Python'ı öğrenmekten ve öğretmekten vazgeçmeyecek. Ancak belgelerin sadece bulunabilir olmaları değil, zamanla gelişmeleri de gerekli; Python dili sürekli gelişiyor ve güncellenmeyen belgeler bir süre sonra eksik ve yanlış bilgileri içermeye mahkum olacaktır. Bu veri havuzu sayesinde belgeler, kaynak kodu ile birlikte, bulunabilir ve en önemlisi de geliştirilebilir olacak. Hatta bu gelişime siz de dahil olabilirsiniz!

Bu arada proje sonlandığında bu belgede istihza.com'a verilen bağlantıların çalışmayabileceğini de unutmamalısınız.

Belgeleri inşa etmek

Belgelerde bir değişiklik yapmak ve belgeleri inşa etmek için dosyasına başvurun.

Belgelerden çevrimdışı iken faydalanmak

Çevrimdışı olarak kullandığınız belgelerin zaman ile güncelliğini yitirip https://python-istihza.yazbel.com/ adresindeki belgelerin gerisinde kalabileceğini unutmayın.

PDF olarak indirme

dosyasını bu link aracılığı ile indirip kullanabilirsiniz.

EPUB olarak indirme

dosyasını bu link aracılığı ile indirip kullanabilirsiniz.

Tek parça HTML olarak indirme

dosyasını bu link aracılığı ile indirip kullanabilirsiniz.

Siteyi kaynaktan indirme

Bu veri havuzunu cihazınıza indirebilir ve dosyasını tarayıcınız ile açabilirsiniz. Bu size belgeleri çevrimiçi olarak kullanmak ile aynı deneyimi sunacaktır.

Nasıl yardım alabilirim?

Her zaman YazBel forumunun Python kategorisinde bir konu açarak aklınızdaki soruları sorabilirsiniz. Topluluk size yardım etmekten mutluluk duyacaktır.

Nasıl yardım edebilirim?

Belgelere ekleme yaparak veya yazım ve bilgi yanlışlarını düzelterek yardım edebilirsiniz:

  • Topluluk tarafından eksikliği hissedilen bazı konular ve belgelerdeki düzeltilmesi gereken hatalar issues sayfasında listelenmiş halde bulunuyor. Bu konular üzerinde çalışma yapabilirsiniz.

  • Belgelerde değişiklik yaparak çekme isteği (pull request) gönderebilirsiniz. Yazım yanlışları ve küçük hatalar için GitHub arayüzünü kullanabilirsiniz ancak daha büyük ve karmaşık düzeltmeler için veri havuzunu bilgisayarınıza çekmeli, daha sonrasında düzeltmeleri yapmalı ve belgeleri inşa edip çekme isteği göndermelisiniz. Her iki durumda da kısa ve öz bir işleme mesajı (commit message) yazdığınıza emin olmalısınız. Belgelerde bir değişiklik yapıp çekme isteğinde bulunmadan önce dosyasındaki adımları takip ettiğinizden de emin olun.

  • Eğer bir yanlış gördünüz ancak bir sebepten ötürü düzeltmeyi kendiniz yapmak istemediyseniz, bu hatayı bildirerek de yardım edebilirsiniz. Bunun için veri havuzunun konular (issues) dizininde bir konu açın, başlık ve açıklama kısmına ilgili metinleri yazın ve gönderin. Başlık kısmının kısa ve öz olmasına dikkat edin.

Lisans

dosyasında da belirtildiği üzere bu belgelerin lisansı Creative Commons Atıf-GayriTicari-AynıLisanslaPaylaş 3.0 Yerelleştirilmemiş (CC BY-NC-SA 3.0) lisansıdır. Daha fazla bilgi için lütfen dosyanın içeriğine bakınız.

Kullanacağımız kaynaklar

  • Integer ifadeler: Sayma sayılarını ifade etmek için kullanılırlar. Örn: -1, 5, 6, 11, ...

  • Float ifadeler: Ondalıklı sayılar. Örn: 1.0, 3.1415, 5.8, 12.666666, 9.999999, ...

  • String ifadeler: Genellikle sözel ifadeleri, dosya yollarını vb. tutmak için kullanılırlar. Bu ifadeler çift tırnak("") arasında kullanılmalıdır. Örn: "Andromeda", "ev", "halı", "C:\Windows\System32", ...

  • Listeler: Çeşitli veri tiplerinden ifadeyi toplu olarak taşımak için kullanılırlar ve [] (köşeli parantezler) içerisinde gösterilmelidir. Örn: [1, 2, 5, "ali", "veli", 3.1415, [1, 6, "balık"]] (Liste içerisinde liste kullandığınıza dikkat edin!)

  • Demetler: Listelere çok benzerler fakat listelerin aksine değiştirilemezler. Parantez içinde gösterilirler. Örn: ("10/A", "10/B", "10C")

  • Sözlükler: Karşılıklı gelen çiftlerin toplanması için kullanılan veri tipleridir. Sözlüklerde bir "anahtar" bir "değere" karşılık gelmek zorundadır. Örnekler ileriki derslerde...

  • Boolean (mantıksal) ifadeler: Veri tipinin yalnızca True (Doğru) veya False (Yanlış) olabileceği ifadelerdir. Genellikle bu veri tipleri koşul gerektiren kısımlarda kullanılır.

  • Not: Bu veri tipleri her ne kadar python'a özgü ise de diğer programlama dillerinde de kullanılmaktadır. Önemli olan işin mantığını kavramaktır!

  • Not 2:# karakteri python'da yorum karakteridir. Python yorumlayıcı # karakteri ile paşlayan satırı kod olarak değerlendirmez. Genellikle programcılar bu ifadeleri yazdıkları kodu açıklamak için kullanırlar.

  • Python Istihza PDF

    Python 3 için Türkçe Kılavuz


    Sürüm 3

    Yazan: Fırat Özgül

    16.05.2016
    İÇİNDEKİLER

    1 Bu Kitap Hakkında 1
    1.1 Bu Kitabı Nereden İndirebilirim? . . . . . . . . . . . . . . . . . . . . . . . . . . 1
    1.2 Bu Kitaptan Nasıl Yararlanabilirim? . . . . . . . . . . . . . . . . . . . . . . . . . 1
    1.3 Nereden Yardım Alabilirim? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
    1.4 Projeye Nasıl Yardımcı Olabilirim? . . . . . . . . . . . . . . . . . . . . . . . . . . 2
    1.5 Kullanım Koşulları . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    2 Python Hakkında 4
    2.1 Python Nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
    2.2 Neden Programlama Öğrenmek İsteyeyim? . . . . . . . . . . . . . . . . . . . . 4
    2.3 Neden Python? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
    2.4 Python Nasıl Telaffuz Edilir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
    2.5 Platform Desteği . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
    2.6 Farklı Python Sürümleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
    2.7 Hangi Seriyi Öğrenmeliyim? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    3 Python Nasıl Kurulur? 8


    3.1 GNU/Linux Kullanıcıları . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
    3.2 Windows Kullanıcıları . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
    3.3 Python Kurulum ve Çalışma Dizini . . . . . . . . . . . . . . . . . . . . . . . . . 14

    4 Python Nasıl Çalıştırılır? 15


    4.1 GNU/Linux Kullanıcıları . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
    4.2 Windows Kullanıcıları . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
    4.3 Hangi Komut Hangi Sürümü Çalıştırıyor? . . . . . . . . . . . . . . . . . . . . . . 22
    4.4 Sistem Komut Satırı ve Python Komut Satırı . . . . . . . . . . . . . . . . . . . . 22

    5 Etkileşimli Python 23
    5.1 Etkileşimli Kabukta İlk Adımlar . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
    5.2 Etkileşimli Kabuğun Hafızası . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

    6 print() Fonksiyonu 49
    6.1 Nedir, Ne İşe Yarar? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
    6.2 Nasıl Kullanılır? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
    6.3 Bir Fonksiyon Olarak print() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
    6.4 print() Fonksiyonunun Parametreleri . . . . . . . . . . . . . . . . . . . . . . . . 55
    6.5 Birkaç Pratik Bilgi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

    i
    7 Kaçış Dizileri 73
    7.1 Ters Taksim (\) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
    7.2 Satır Başı (\n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
    7.3 Sekme (\t) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
    7.4 Zil Sesi (\a) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
    7.5 Aynı Satır Başı (\r) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
    7.6 Düşey Sekme (\v) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
    7.7 İmleç Kaydırma (\b) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
    7.8 Küçük Unicode (\u) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
    7.9 Büyük Unicode (\U) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
    7.10 Uzun Ad (\N) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
    7.11 Onaltılı Karakter (\x) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
    7.12 Etkisizleştirme (r) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
    7.13 Sayfa Başı (\f) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
    7.14 Kaçış Dizilerine Toplu Bakış . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

    8 Programları Kaydetme ve Çalıştırma 92


    8.1 GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
    8.2 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

    9 Çalışma Ortamı Tavsiyesi 96


    9.1 Windows Kullanıcıları . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
    9.2 GNU/Linux Kullanıcıları . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
    9.3 Metin Düzenleyici Ayarları . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
    9.4 MS-DOS Komut Satırı Ayarları . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
    9.5 Program Örnekleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

    10 Yorum ve Açıklama Cümleleri 104


    10.1 Yorum İşareti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
    10.2 Yorum İşaretinin Farklı Kullanımları . . . . . . . . . . . . . . . . . . . . . . . . . 106

    11 Kullanıcıdan Bilgi Almak 109


    11.1 input() Fonksiyonu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
    11.2 Tip Dönüşümleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
    11.3 eval() ve exec() Fonksiyonları . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
    11.4 format() Metodu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

    12 Koşullu Durumlar 133


    12.1 Koşul Deyimleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
    12.2 Örnek Uygulama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

    13 İşleçler 147
    13.1 Aritmetik İşleçler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
    13.2 Karşılaştırma İşleçleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
    13.3 Bool İşleçleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
    13.4 Değer Atama İşleçleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
    13.5 Aitlik İşleçleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
    13.6 Kimlik İşleçleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
    13.7 Uygulama Örnekleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

    14 Döngüler (Loops) 180


    14.1 while Döngüsü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
    14.2 for Döngüsü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

    ii
    14.3 İlgili Araçlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
    14.4 Örnek Uygulamalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

    15 Hata Yakalama 213


    15.1 Hata Türleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
    15.2 try... except... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
    15.3 try... except... as... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
    15.4 try... except... else... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
    15.5 try... except... finally... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
    15.6 raise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
    15.7 Bütün Hataları Yakalamak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
    15.8 Örnek Uygulama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

    16 Karakter Dizileri 226


    16.1 Karakter Dizilerinin Öğelerine Erişmek . . . . . . . . . . . . . . . . . . . . . . . 227
    16.2 Karakter Dizilerini Dilimlemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
    16.3 Karakter Dizilerini Ters Çevirmek . . . . . . . . . . . . . . . . . . . . . . . . . . 236
    16.4 Karakter Dizilerini Alfabe Sırasına Dizmek . . . . . . . . . . . . . . . . . . . . . 238
    16.5 Karakter Dizileri Üzerinde Değişiklik Yapmak . . . . . . . . . . . . . . . . . . . . 240
    16.6 Üç Önemli Fonksiyon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
    16.7 Notlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

    17 Karakter Dizilerinin Metotları 252


    17.1 replace() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
    17.2 split(), rsplit(), splitlines() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
    17.3 lower() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
    17.4 upper() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
    17.5 islower(), isupper() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
    17.6 endswith() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
    17.7 startswith() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

    18 Karakter Dizilerinin Metotları (Devamı) 269


    18.1 capitalize() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
    18.2 title() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
    18.3 swapcase() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
    18.4 casefold() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
    18.5 strip(), lstrip(), rstrip() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
    18.6 join() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
    18.7 count() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
    18.8 index(), rindex() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
    18.9 find, rfind() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
    18.10 center() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
    18.11 rjust(), ljust() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
    18.12 zfill() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
    18.13 partition(), rpartition() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
    18.14 encode() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
    18.15 expandtabs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292

    19 Karakter Dizilerinin Metotları (Devamı) 293


    19.1 str.maketrans(), translate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
    19.2 isalpha() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
    19.3 isdigit() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

    iii
    19.4 isalnum() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
    19.5 isdecimal() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
    19.6 isidentifier() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
    19.7 isnumeric() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
    19.8 isspace() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
    19.9 isprintable() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307

    20 Karakter Dizilerini Biçimlendirmek 309


    20.1 % İşareti ile Biçimlendirme (Eski Yöntem) . . . . . . . . . . . . . . . . . . . . . 311
    20.2 format() Metodu ile Biçimlendirme (Yeni Yöntem) . . . . . . . . . . . . . . . . . 323

    21 Listeler ve Demetler 332


    21.1 Listeler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
    21.2 Demetler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

    22 Listelerin ve Demetlerin Metotları 372


    22.1 Listelerin Metotları . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
    22.2 Demetlerin Metotları . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383

    23 Sayma Sistemleri 385


    23.1 Onlu Sayma Sistemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
    23.2 Sekizli Sayma Sistemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
    23.3 On Altılı Sayma Sistemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
    23.4 İkili Sayma Sistemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
    23.5 Sayma Sistemlerini Birbirine Dönüştürme . . . . . . . . . . . . . . . . . . . . . 391
    23.6 Sayma Sistemlerinin Birbirlerine Karşı Avantajları . . . . . . . . . . . . . . . . . 394

    24 Sayılar 396
    24.1 Sayıların Metotları . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
    24.2 Aritmetik Fonksiyonlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400

    25 Temel Dosya İşlemleri 404


    25.1 Dosya Oluşturmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
    25.2 Dosyaya Yazmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
    25.3 Dosya Okumak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
    25.4 Dosyaları Otomatik Kapatma . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
    25.5 Dosyayı İleri-Geri Sarmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
    25.6 Dosyalarda Değişiklik Yapmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
    25.7 Dosyaya Erişme Kipleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416

    26 Dosyaların Metot ve Nitelikleri 419


    26.1 closed Niteliği . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
    26.2 readable() Metodu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
    26.3 writable() Metodu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
    26.4 truncate() Metodu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
    26.5 mode Niteliği . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
    26.6 name Niteliği . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
    26.7 encoding Niteliği . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422

    27 İkili (Binary ) Dosyalar 423


    27.1 İkili Dosyalarla Örnekler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424

    28 Basit bir İletişim Modeli 432

    iv
    28.1 8 Bitlik bir Sistem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
    28.2 Hata Kontrolü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
    28.3 Karakterlerin Temsili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436

    29 Karakter Kodlama (Character Encoding ) 439


    29.1 Giriş . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
    29.2 ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
    29.3 UNICODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
    29.4 Konu ile ilgili Fonksiyonlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458

    30 Baytlar (Bytes) ve Bayt Dizileri (Bytearrays) 463


    30.1 Giriş . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
    30.2 Eskisi ve Yenisi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
    30.3 Bayt Tanımlamak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
    30.4 bytes() Fonksiyonu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
    30.5 Baytların Metotları . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
    30.6 Bayt Dizileri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
    30.7 Bayt Dizilerinin Metotları . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470

    31 Sözlükler 472
    31.1 Sözlük Tanımlamak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
    31.2 Sözlük Öğelerine Erişmek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
    31.3 Sözlüklerin Yapısı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
    31.4 Sözlüklere Öğe Eklemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
    31.5 Sözlük Öğeleri Üzerinde Değişiklik Yapmak . . . . . . . . . . . . . . . . . . . . . 484
    31.6 Sözlük Üreteçleri (Dictionary Comprehensions ) . . . . . . . . . . . . . . . . . . 484

    32 Sözlüklerin Metotları 486


    32.1 keys() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
    32.2 values() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
    32.3 items() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
    32.4 get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
    32.5 clear() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
    32.6 copy() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
    32.7 fromkeys() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
    32.8 pop() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
    32.9 popitem() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
    32.10 setdefault() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
    32.11 update() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494

    33 Kümeler ve Dondurulmuş Kümeler 496


    33.1 Kümeler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
    33.2 Dondurulmuş Kümeler (Frozenset) . . . . . . . . . . . . . . . . . . . . . . . . . 512

    34 Fonksiyonlar 513
    34.1 Fonksiyon Nedir ve Ne İşe Yarar? . . . . . . . . . . . . . . . . . . . . . . . . . . 513
    34.2 Fonksiyon Tanımlamak ve Çağırmak . . . . . . . . . . . . . . . . . . . . . . . . 517
    34.3 Fonksiyonların Yapısı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
    34.4 Fonksiyonlar Ne İşe Yarar? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
    34.5 Parametreler ve Argümanlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528
    34.6 return Deyimi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
    34.7 Örnek bir Uygulama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539

    v
    34.8 Fonksiyonların Kapsamı ve global Deyimi . . . . . . . . . . . . . . . . . . . . . 543

    35 Gömülü Fonksiyonlar 548


    35.1 abs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
    35.2 round() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
    35.3 all() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
    35.4 any() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
    35.5 ascii() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
    35.6 repr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
    35.7 bool() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
    35.8 bin() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
    35.9 bytes() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
    35.10 bytearray() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
    35.11 chr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
    35.12 list() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
    35.13 set() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559
    35.14 tuple() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559
    35.15 frozenset() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559
    35.16 complex() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
    35.17 float() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
    35.18 int() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
    35.19 str() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561
    35.20 dict() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562
    35.21 callable() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563
    35.22 ord() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563
    35.23 oct() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563
    35.24 hex() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563
    35.25 eval(), exec(), globals(), locals(), compile() . . . . . . . . . . . . . . . . . . . . . . 564
    35.26 copyright() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
    35.27 credits() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
    35.28 license() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
    35.29 dir() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
    35.30 divmod() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
    35.31 enumerate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
    35.32 exit() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
    35.33 help() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
    35.34 id() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
    35.35 input() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
    35.36 format() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
    35.37 filter() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
    35.38 hash() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
    35.39 isinstance() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
    35.40 len() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
    35.41 map() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
    35.42 max() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
    35.43 min() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
    35.44 open() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
    35.45 pow() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
    35.46 print() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
    35.47 quit() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
    35.48 range() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585

    vi
    35.49 reversed() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
    35.50 sorted() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
    35.51 slice() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593
    35.52 sum() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
    35.53 type() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
    35.54 zip() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
    35.55 vars() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596

    36 İleri Düzey Fonksiyonlar 598


    36.1 Lambda Fonksiyonları . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598
    36.2 Özyinelemeli (Recursive ) Fonksiyonlar . . . . . . . . . . . . . . . . . . . . . . . 602

    37 Modüller 615
    37.1 Modül Nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615
    37.2 Hazır Modüller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
    37.3 Modüllerin İçe Aktarılması . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618
    37.4 Kendi Tanımladığımız Modüller . . . . . . . . . . . . . . . . . . . . . . . . . . . 626
    37.5 Üçüncü Şahıs Modülleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
    37.6 __all__ Listesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
    37.7 Modüllerin Özel Nitelikleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638

    38 Nesne Tabanlı Programlama (OOP) 648


    38.1 Giriş . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648
    38.2 Sınıflar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649
    38.3 Sınıflar Ne İşe Yarar? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650
    38.4 Sınıf Tanımlamak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658
    38.5 Sınıf Nitelikleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659
    38.6 Sınıfların Örneklenmesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661
    38.7 Örnek Nitelikleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667
    38.8 __init__ Fonksiyonu ve self . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667
    38.9 Örnek Metotları . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673

    39 Nesne Tabanlı Programlama (Devamı) 680


    39.1 Sınıf Metotları . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680
    39.2 @classmethod Bezeyicisi ve cls . . . . . . . . . . . . . . . . . . . . . . . . . . . 685
    39.3 Alternatif İnşacılar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688
    39.4 Statik Metotlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697
    39.5 @staticmethod Bezeyicisi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697

    40 Nesne Tabanlı Programlama (Devamı) 701


    40.1 Nesneler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701
    40.2 Nesne Nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701
    40.3 Basit Bir Oyun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703
    40.4 Her Şey Bir Nesnedir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713
    40.5 Birinci Sınıf Öğeler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714

    41 Nesne Tabanlı Programlama (Devamı) 717


    41.1 Sınıf Üyeleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717
    41.2 @property Bezeyicisi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727

    42 Nesne Tabanlı Programlama (Devamı) 738


    42.1 Miras Alma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738
    42.2 Taban Sınıflar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740

    vii
    42.3 Alt Sınıflar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742
    42.4 Miras Alma Türleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744
    42.5 super() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750
    42.6 object Sınıfı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753

    43 Nesne Tabanlı Programlama (Devamı) 756


    43.1 Tkinter Hakkında . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756
    43.2 Prosedürel Bir Örnek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757
    43.3 Sınıflı Bir Örnek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762
    43.4 Çoklu Miras Alma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764
    43.5 Dahil Etme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767

    44 Nesne Tabanlı Programlama (Devamı) 769


    44.1 İnşa, İlklendirme ve Sonlandırma . . . . . . . . . . . . . . . . . . . . . . . . . . 769

    45 Paketler 771
    45.1 Paket Nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771
    45.2 Paket Türleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772
    45.3 Paketlerin İçe Aktarılması . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774
    45.4 Kendi Oluşturduğumuz Paketler . . . . . . . . . . . . . . . . . . . . . . . . . . . 777

    46 Düzenli İfadeler 786


    46.1 Düzenli İfadelerin Metotları . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787
    46.2 Metakarakterler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794
    46.3 Eşleşme Nesnelerinin Metotları . . . . . . . . . . . . . . . . . . . . . . . . . . . 810
    46.4 Özel Diziler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812
    46.5 Düzenli İfadelerin Derlenmesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814
    46.6 Düzenli İfadelerle Metin/Karakter Dizisi Değiştirme İşlemleri . . . . . . . . . . 816
    46.7 Sonuç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820

    47 Sqlite ile Veritabanı Programlama 821


    47.1 Giriş . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821
    47.2 Neden Sqlite? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821
    47.3 Sqlite’ın Yapısı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822
    47.4 Yardımcı Araçlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823
    47.5 Yeni Bir Veritabanı Oluşturmak . . . . . . . . . . . . . . . . . . . . . . . . . . . 824
    47.6 Varolan Bir Veritabanıyla Bağlantı Kurmak . . . . . . . . . . . . . . . . . . . . . 826
    47.7 İmleç Oluşturma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826
    47.8 Tablo Oluşturma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827
    47.9 Şartlı Tablo Oluşturma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828
    47.10 Tabloya Veri Girme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829
    47.11 Verilerin Veritabanına İşlenmesi . . . . . . . . . . . . . . . . . . . . . . . . . . . 830
    47.12 Veritabanının Kapatılması . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831
    47.13 Parametreli Sorgular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832
    47.14 Tablodaki Verileri Seçmek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833
    47.15 Seçilen Verileri Almak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834
    47.16 Veri Süzme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839
    47.17 Veritabanı Güvenliği . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 840
    47.18 Bölüm Soruları . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845

    48 Önemli Standart Kütüphane Modülleri 847


    48.1 os Modülü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847

    viii
    48.2 sys Modülü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865
    48.3 random Modülü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 877
    48.4 datetime Modülü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 881
    48.5 time Modülü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 892

    49 Katkıda Bulunanlar 897


    49.1 Barbaros Akkurt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898
    49.2 Şebnem Duyar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899
    49.3 Onur Eker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899
    49.4 Emre Erözgün . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899
    49.5 Tayfun Yaşar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899
    49.6 Metin Hırçın . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899
    49.7 Ahmet Öztekin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899
    49.8 Mesut İdiz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900
    49.9 Levent Civa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900
    49.10 Fırat Ekinci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900
    49.11 Talha Kesler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900
    49.12 Ömer Gök . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900
    49.13 Yunus Emre Bulut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900
    49.14 Erhan Paşaoğlu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900
    49.15 Cemre Efe Karakaş . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901
    49.16 Salim Yıldırım . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901
    49.17 Çağatay Genlik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901
    49.18 Valeh Asadlı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901
    49.19 Halit Turan Arıcan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901
    49.20 Levent Güler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901
    49.21 Yaşar Celep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902
    49.22 Uğur Uyar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902
    49.23 Serdar Çağlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902
    49.24 Ahmet Onur Yıldırım . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902
    49.25 Anıl İlginoğlu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903
    49.26 Hüseyin Ulaş Yeltürk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903
    49.27 Nuri Acar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903
    49.28 Azat Fırat Çimen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903
    49.29 Aykut Kardaş . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903
    49.30 Sezer Bozkır . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903
    49.31 Alican Uzunhan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903
    49.32 Özgür Özer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904
    49.33 Kerim Yıldız . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904
    49.34 Muhammed Yılmaz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904
    49.35 Ahmet Erdoğan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904
    49.36 Abdurrahman Dursun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904
    49.37 Tahir Uzelli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905
    49.38 Mehmet Akbay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905
    49.39 Mehmet Çelikyontar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905
    49.40 Savaş Zengin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905
    49.41 Tuncay Güven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905
    49.42 Cafer Uluç . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905
    49.43 Nikita Türkmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905
    49.44 Axolotl Axolotl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905

    ix
    x
    BÖLÜM 1

    Bu Kitap Hakkında

    Elinizdeki kitap, Python programlama dili için kapsamlı bir Türkçe kaynak oluşturma
    projesi olan istihza.com‘un bir ürünüdür. Bu kitabın amacı, herhangi bir sebeple Python
    programlama diline ilgi duyan, bu programlama dilini öğrenmek isteyen kişilere bu dili
    olabildiğince hızlı, ayrıntılı ve kolay bir şekilde öğretmektir.
    Bu kitabın hedef kitlesi, programlamayı hiç bilmeyen kişilerdir. Bu sebeple, bu kitapta ders
    konularını olabildiğince ayrıntılı ve basitleştirilmiş bir şekilde ele almaya çalıştık. Ancak
    eğer geçmişten gelen bir programlama deneyiminiz varsa, üstelik programlamaya ilişkin
    kavramlara da aşinaysanız, bu kitabı sıkıcı bulabilirsiniz. Öyle bir durumda, bu belgelerin
    yerine, Python programlama diline ait resmi kılavuzun, yine istihza.com projesinin bir ürünü
    olan Türkçe çevirisini takip etmeyi tercih edebilirsiniz. Fakat öğreneceğiniz ilk programlama
    dili Python ise, resmi kılavuzu anlamak size epey zor gelecektir.

    1.1 Bu Kitabı Nereden İndirebilirim?

    Bu kitabı İnternet üzerinden takip edebileceğiniz gibi, depodan PDF veya EPUB biçimlerinde
    bilgisayarınıza da indirebilirsiniz. Ancak bu kitabın henüz yazılma aşamasında olduğunu ve
    içeriğinin sık sık güncellendiğini aklınızdan çıkarmayın. Dolayısıyla, bilgisayarınıza indirdiğiniz
    PDF ve EPUB belgeleri güncelliğini çabucak yitirecektir. O yüzden, eğer mümkünse, kitabı
    çevrim içi kaynağından takip etmeniz veya bu mümkün değilse, PDF/EPUB belgelerini sık sık
    yeniden indirmeniz daha mantıklı olacaktır.

    1.2 Bu Kitaptan Nasıl Yararlanabilirim?

    Elinizdeki kitap, epey uzun ve ayrıntılı makalelerden oluşuyor. Dolayısıyla bu kitabı elinize
    alıp bir roman gibi okumaya çalışırsanız, sıkılıp öğrenme azminizi kaybedebilirsiniz. Bu kitabı
    sıkılmadan ve bıkkınlığa düşmeden takip edebilmeniz için size birkaç öneride bulunalım.
    Programlama dillerini, sanki tarih, coğrafya veya felsefe çalışıyormuşsunuz gibi, kitaba
    gömülüp harıl harıl okuyarak öğrenemezsiniz. Programlama dillerini öğrenebilmek için sizin
    de etkin bir şekilde öğrenme sürecine katılmanız gerekir. Yani bu kitaptaki makalelere kafanızı
    gömmek yerine, bol bol örnek kod yazmaya çalışırsanız, öğrendiğiniz şeyler zihninizde daha
    kolay yer edecektir. Birincisi bu.
    İkincisi, kimse sizden bu kitaptaki her ayrıntıyı ezberlemenizi beklemiyor. Maharet, bir
    konuya ilişkin bütün ayrıntıları akılda tutabilmekte değildir. İyi bir programcı, bir konuya dair
    nasıl araştırma yapacağını ve kaynaklardan nasıl faydalanacağını bilir. Bir yazılım geliştirici

    1
    Python 3 için Türkçe Kılavuz, Sürüm 3

    adayı olarak sizin de öğrenmeniz gereken şey, gördüğünüz bütün konuları en ince ayrıntısına
    kadar ezberlemeye kalkışmaktan ziyade, o konuya ilişkin ilk aşamada fikir sahibi olmaya
    çalışmaktır. Python’da ilerledikçe, zaten belli alanlara ilgi duyacak, kendinizi o alanlarda
    geliştirmeye çalışacaksınız. Elbette çok uğraştığınız konulara ilişkin ayrıntılar da daha kolay
    aklınızda kalacaktır. Üstelik bir projeye ilişkin gerekliliklerin sizi yönlendirmesiyle, belli
    konularda daha ayrıntılı araştırma yapma fırsatı da bulacaksınız.
    Üçüncüsü, bir konuyu çalışırken yeterince anlayamadığınızı hissederseniz, lütfen dudağınızı
    büzüp bir duvar köşesine kıvrılarak kendi kendinizi yılgınlığa düşürmeyin. Eğer bir konuyu
    anlamadıysanız, okuyup geçin. Okuyup geçmek içinize sinmiyorsa, aşağıda belirttiğimiz
    şekilde yardım isteyin.

    1.3 Nereden Yardım Alabilirim?

    Bu kitapta Python programlama diline ilişkin konuları olabildiğince temiz ve anlaşılır bir dille
    anlatmaya çalıştık. Ancak yine de bazı konular zihninizde tam olarak yer etmeyebilir. Üstelik
    kimi zaman, bir konuyu daha iyi anlayabilmek ya da bir sorunun üstesinden gelebilmek için
    bilen birilerinin yardımına da ihtiyaç duyabilirsiniz. İşte böyle durumlarda istihza.com’un
    forum alanına uğrayarak başka Python programcılarından yardım isteyebilirsiniz.
    Forum alanı hem bilgi edinmek, hem de bildiklerinizi paylaşmak için oldukça elverişli bir
    ortamdır. Foruma ilk girişiniz muhtemelen yardım istemek için olacaktır. Ama ilerleyen
    zamanlarda Python bilginiz arttıkça bir de bakacaksınız ki yardım ararken yardım eder
    duruma gelmişsiniz. İşte forum; kendinizdeki değişimi görmek, bilgi düzeyinizdeki artışı takip
    etmek ve hatta yeni şeyler öğrenmek için bulunmaz bir fırsattır.

    1.4 Projeye Nasıl Yardımcı Olabilirim?

    Bu kitabın amacı, kitabı okuyanlara Python programlama dilini doğru ve ayrıntılı bir şekilde
    öğretmek olduğu kadar, bu programlama dilini öğretirken düzgün ve anlaşılır bir Türkçe de
    kullanmaktır. Bu bakımdan, kitapta bulabileceğiniz kod hatalarıyla birlikte, kitaptaki anlatım,
    yazım ve noktalama hatalarını da yazara iletirseniz, istihza.com projesine önemli bir katkıda
    bulunmuş olursunuz.
    Ayrıca bkz.:
    Projeye bu şekilde katkıda bulunanların listesini Katkıda Bulunanlar başlıklı sayfada
    görebilirsiniz.
    Bunun dışında, projeye destek olmanın bir başka yolu, forum alanında sorulan soruları
    cevaplamaya çalışmaktır. Bu şekilde hem projeye destek olmuş, hem başkalarına yardım
    etmiş, hem de kendi bilginizi artırmış olursunuz.

    1.5 Kullanım Koşulları

    Bu kitaptaki bilgiler, istihza.com’un öteki kısımları gibi, Creative Commons lisansı altındadır.
    Bu lisansa göre, bu kitaptaki bütün bilgilerden herkes ücretsiz olarak yararlanabilir. Eğer
    isterseniz burada gördüğünüz belgelerin çıktısını alabilir, tanıdığınız veya tanımadığınız
    herkesle gönül rahatlığıyla paylaşabilirsiniz. Ancak bu belgeleri başka bir yerde

    2 Bölüm 1. Bu Kitap Hakkında


    Python 3 için Türkçe Kılavuz, Sürüm 3

    kullanacaksanız, istihza.com adresini kaynak olarak göstermeli ve bu belgeleri kesinlikle


    satmamalısınız. Arzu ederseniz belgeleri çoğaltıp ücretsiz olarak dağıtabilirsiniz.

    1.5. Kullanım Koşulları 3


    BÖLÜM 2

    Python Hakkında

    Eğer yaşamınızın bir döneminde herhangi bir programlama dili ile az veya çok ilgilendiyseniz,
    Python adını duymuş olabilirsiniz. Önceden bir programlama dili deneyiminiz hiç olmamışsa
    dahi, Python adının bir yerlerden kulağınıza çalınmış olma ihtimali bir hayli yüksek. Bu
    satırları okuyor olduğunuza göre, Python adını en az bir kez duymuş olduğunuzu ve bu şeye
    karşı içinizde hiç değilse bir merak uyandığını varsayabiliriz.
    Peki, en kötü ihtimalle kulak dolgunluğunuz olduğunu varsaydığımız bu şey hakkında acaba
    neler biliyorsunuz?
    İşte biz bu ilk bölümde, fazla teknik ayrıntıya kaçmadan, Python hakkında kısa kısa bilgiler
    vererek Python’ın ne olduğunu ve bununla neler yapabileceğinizi anlatmaya çalışacağız.

    2.1 Python Nedir?

    Tahmin edebileceğiniz gibi Python (C, C++, Perl, Ruby ve benzerleri gibi) bir programlama
    dilidir ve tıpkı öteki programlama dilleri gibi, önünüzde duran kara kutuya, yani bilgisayara
    hükmetmenizi sağlar.
    Bu programlama dili Guido Van Rossum adlı Hollandalı bir programcı tarafından 90’lı yılların
    başında geliştirilmeye başlanmıştır. Çoğu insan, isminin Python olmasına aldanarak, bu
    programlama dilinin, adını piton yılanından aldığını düşünür. Ancak zannedildiğinin aksine
    bu programlama dilinin adı piton yılanından gelmez. Guido Van Rossum bu programlama
    dilini, The Monty Python adlı bir İngiliz komedi grubunun, Monty Python’s Flying Circus adlı
    gösterisinden esinlenerek adlandırmıştır. Ancak her ne kadar gerçek böyle olsa da, Python
    programlama dilinin pek çok yerde bir yılan figürü ile temsil edilmesi neredeyse bir gelenek
    halini almıştır.
    Dediğimiz gibi, Python bir programlama dilidir. Üstelik pek çok dile kıyasla öğrenmesi
    kolay bir programlama dilidir. Bu yüzden, eğer daha önce hiç programlama deneyiminiz
    olmamışsa, programlama maceranıza Python’la başlamayı tercih edebilirsiniz.

    2.2 Neden Programlama Öğrenmek İsteyeyim?

    Günlük yaşamınıza şöyle bir bakın. Gerek iş yerinizde olsun, gerek evde bilgisayar başında
    olsun, belli işleri tekdüze bir şekilde tekrar ettiğinizi göreceksiniz. Mesela sürekli olarak yazılı
    belgelerle uğraşmanızı gerektiren bir işte çalışıyor olabilirsiniz. Belki de her gün onlarca
    belgeyi açıp bu belgelerde birtakım bilgiler arıyor, bu bilgileri düzeltiyor, yeniliyor veya

    4
    Python 3 için Türkçe Kılavuz, Sürüm 3

    siliyorsunuzdur. Bu işlemlerin ne kadar vakit alıcı ve sıkıcı olduğunu düşünün. Eğer bir
    programlama dili biliyor olsaydınız, bütün bu işlemleri sizin yerinize bu programlama dili
    hallediyor olabilirdi.
    İşte Python programlama dili böyle bir durumda devreye girer. Her gün saatler boyunca
    uğraştığınız işlerinizi, yalnızca birkaç satır Python kodu yardımıyla birkaç saniye içinde
    tamamlayabilirsiniz.
    Ya da şöyle bir durum düşünün: Çalıştığınız iş yerinde PDF belgeleriyle bolca haşır neşir
    oluyor olabilirsiniz. Belki de yüzlerce sayfalık kaşeli ve imzalı belgeyi PDF haline getirmeniz
    gerekiyordur. Üstelik sizden bu belgeleri mümkün olduğunca tek parça halinde PDF’lemeniz
    isteniyor olabilir. Ama o yüzlerce sayfayı tarayıcıdan geçirirken işin tam ortasında bir aksilik
    oluyor, makine arızalanıyor ve belki de ister istemez belgeniz bölünüyordur.
    İşte Python programlama dili böyle bir durumda da devreye girer. Eğer Python programlama
    dilini öğrenirseniz, İnternet’te saatlerce ücretsiz PDF birleştirme programı aramak veya
    profesyonel yazılımlara onlarca dolar para vermek yerine, belgelerinizi birleştirip işinizi
    görecek programı kendiniz yazabilirsiniz.
    Elbette Python’la yapabilecekleriniz yukarıda verdiğimiz basit örneklerle sınırlı değildir.
    Python’ı kullanarak masaüstü programlama, oyun programlama, taşınabilir cihaz
    programlama, web programlama ve ağ programlama gibi pek çok alanda çalışmalar
    yürütebilirsiniz.

    2.3 Neden Python?

    Python programlarının en büyük özelliklerinden birisi, C ve C++ gibi dillerin aksine,


    derlenmeye gerek olmadan çalıştırılabilmeleridir. Python’da derleme işlemi ortadan
    kaldırıldığı için, bu dille oldukça hızlı bir şekilde program geliştirilebilir.
    Ayrıca Python programlama dilinin basit ve temiz söz dizimi, onu pek çok programcı
    tarafından tercih edilen bir dil haline getirmiştir. Python’ın söz diziminin temiz ve basit olması
    sayesinde hem program yazmak, hem de başkası tarafından yazılmış bir programı okumak,
    başka dillere kıyasla çok kolaydır.
    Python’ın yukarıda sayılan özellikleri sayesinde dünya çapında ün sahibi büyük kuruluşlar
    (Google, YouTube ve Yahoo! gibi) bünyelerinde her zaman Python programcılarına ihtiyaç
    duyuyor. Mesela pek çok büyük şirketin Python bilen programcılara iş imkanı sağladığını,
    Python’ın baş geliştiricisi Guido Van Rossum’un 2005 ile 2012 yılları arasında Google’da
    çalıştığını, 2012 yılının sonlarına doğru ise Dropbox şirketine geçtiğini söylersek, bu
    programlama dilinin önemi ve geçerliliği herhalde daha belirgin bir şekilde ortaya çıkacaktır.
    Python programlama dili ve bu dili hakkıyla bilenler sadece uluslararası şirketlerin ilgisini
    çekmekle kalmıyor. Python son zamanlarda Türkiye’deki kurum ve kuruluşların da dikkatini
    çekmeye başladı. Bu dil artık yavaş yavaş Türkiye’deki üniversitelerin müfredatında da
    kendine yer buluyor.
    Sözün özü, pek çok farklı sebepten, başka bir programlama dilini değil de, Python
    programlama dilini öğrenmek istiyor olabilirsiniz.

    2.3. Neden Python? 5


    Python 3 için Türkçe Kılavuz, Sürüm 3

    2.4 Python Nasıl Telaffuz Edilir?

    Python programlama dili üzerine bu kadar söz söyledik. Peki yabancı bir kelime olan python ‘ı
    nasıl telaffuz edeceğimizi biliyor muyuz?
    Geliştiricisi Hollandalı olsa da python İngilizce bir kelimedir. Dolayısıyla bu kelimenin
    telaffuzunda İngilizcenin kuralları geçerli. Ancak bu kelimeyi hakkıyla telaffuz etmek, ana dili
    Türkçe olanlar için pek kolay değil. Çünkü bu kelime içinde, Türkçede yer almayan ve telaffuzu
    peltek s’yi andıran [th] sesi var. İngilizce bilenler bu sesi think (düşünmek) kelimesinden
    hatırlayacaklardır. Ana dili Türkçe olanlar think kelimesini genellikle [tink] şeklinde telaffuz
    eder. Dolayısıyla python kelimesini de [paytın] şeklinde telaffuz edebilirsiniz.
    Python kelimesini tamamen Türkçeleştirerek [piton] şeklinde telaffuz etmeyi yeğleyenler de
    var. Elbette siz de dilinizin döndüğü bir telaffuzu tercih etmekte özgürsünüz.
    Bu arada, eğer python kelimesinin İngilizce telaffuzunu dinlemek istiyorsanız howjsay.com
    adresini ziyaret edebilir, Guido Van Rossum’un bu kelimeyi nasıl telaffuz ettiğini merak
    ediyorsanız da http://goo.gl/bx9iJu adresindeki tanıtım videosunu izleyebilirsiniz.

    2.5 Platform Desteği

    Python programlama dili pek çok farklı işletim sistemi ve platform üzerinde çalışabilir.
    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 adını dahi
    duymadığınız pek çok ortamda Python uygulamaları geliştirebilirsiniz. Ayrıca herhangi bir
    ortamda yazdığınız bir Python programı, üzerinde hiçbir değişiklik yapılmadan veya ufak
    değişikliklerle başka ortamlarda da çalıştırılabilir.
    Biz bu belgelerde Python programlama dilini GNU/Linux ve Microsoft Windows işletim sistemi
    üzerinden anlatacağız. Ancak sıkı sıkıya bel bağlayacağımız özel bir GNU/Linux dağıtımı
    veya Windows sürümü yok. Bu yüzden, hangi GNU/Linux dağıtımını veya hangi Windows
    sürümünü kullanıyor olursanız olun, buradaki bilgiler yardımıyla Python programlama dilini
    öğrenebilir, öğrendiklerinizi kendi işletim sisteminize uyarlayabilirsiniz.

    Not: Bu satırların yazarının, Ubuntu, CentOs, Windows 7 ve Windows 10 kurulu


    bilgisayarlara erişimi olduğu için, bu kitaptaki ekran görüntüleri genellikle bu işletim
    sistemlerinden alınmış olacaktır.

    2.6 Farklı Python Sürümleri

    Eğer daha önce Python programlama dili ile ilgili araştırma yaptıysanız, şu anda piyasada iki
    farklı Python serisinin olduğu dikkatinizi çekmiş olmalı. 20.04.2016 tarihi itibariyle piyasada
    olan en yeni Python sürümleri Python 2.7.11 ve Python 3.5.1‘dir.
    Eğer bir Python sürümü 2 sayısı ile başlıyorsa (mesela 2.7.11), o sürüm Python 2.x serisine
    aittir. Yok eğer bir Python sürümü 3 sayısı ile başlıyorsa (mesela 3.5.1), o sürüm Python 3.x
    serisine aittir.
    Peki neden piyasada iki farklı Python sürümü var ve bu bizim için ne anlama geliyor?

    6 Bölüm 2. Python Hakkında


    Python 3 için Türkçe Kılavuz, Sürüm 3

    Python programlama dili 1990 yılından bu yana geliştirilen bir dil. Bu süre içinde pek çok
    Python programı yazıldı ve insanların kullanımına sunuldu. Şu anda piyasada Python’ın 2.x
    serisinden bir sürümle yazılmış pek çok program bulunuyor. 3.x serisi ise ancak son yıllarda
    yaygınlık kazanmaya başladı.

    Not: Biz bu kitapta kolaylık olsun diye Python’ın 3.x serisini Python3; 2.x serisini ise Python2
    olarak adlandıracağız.

    Python3, Python2’ye göre hem çok daha güçlüdür, hem de Python2’nin hatalarından
    arındırılmıştır. Python3’teki büyük değişikliklerden ötürü, Python2 ile yazılmış bir program
    Python3 altında çalışmayacaktır. Aynı durum bunun tersi için de geçerlidir. Yani Python3
    kullanarak yazdığınız bir program Python2 altında çalışmaz.
    Dediğimiz gibi, piyasada Python2 ile yazılmış çok sayıda program var. İşte bu sebeple Python
    geliştiricileri uzun bir süre daha Python2’yi geliştirmeye devam edecek. Elbette geliştiriciler
    bir yandan da Python3 üzerinde çalışmayı ve bu yeni seriyi geliştirmeyi sürdürecek.
    Farklı Python serilerinin var olmasından ötürü, Python ile program yazarken hangi seriye
    ait sürümlerden birini kullandığınızı bilmeniz, yazacağınız programın kaderi açısından büyük
    önem taşır.

    2.7 Hangi Seriyi Öğrenmeliyim?

    Dediğimiz gibi, şu anda piyasada iki farklı Python serisi var: Python3 ve Python2. Peki acaba
    hangi seriye ait bir sürümü öğrenmelisiniz?
    [Kısa cevap]
    Python3’ü öğrenmelisiniz.
    [Uzun cevap]
    Eğer Python programlama diline yeni başlıyorsanız Python3’ü öğrenmeniz daha doğru
    olacaktır. Ama eğer Python programlama dilini belirli bir proje üzerinde çalışmak
    üzere öğreniyorsanız, hangi sürümü öğrenmeniz gerektiği, projede kullanacağınız yardımcı
    modüllerin durumuna bağlıdır. Zira şu anda piyasada bulunan bütün Python
    modülleri/programları henüz Python3’e aktarılmış değil.
    Eğer projenizde kullanmayı planladığınız yardımcı modüller halihazırda Python3’e
    aktarılmışsa Python3’ü öğrenebilirsiniz. Ancak eğer bu modüllerin henüz Python3 sürümü
    çıkmamışsa sizin de Python2 ile devam etmeniz daha uygun olabilir. Ama her halükarda
    Python3’ün bu dilin geleceği olduğunu ve günün birinde Python2’nin tamamen tedavülden
    kalkacağını da aklınızın bir köşesinde bulundurun.

    2.7. Hangi Seriyi Öğrenmeliyim? 7


    BÖLÜM 3

    Python Nasıl Kurulur?

    Python ile program yazabilmemiz için bu programlama dilinin bilgisayarımızda kurulu olması
    gerekiyor. Bu programlama dilini kurmanızın gerekip gerekmediği, kullandığınız işletim
    sistemine bağlıdır. Biz burada hem GNU/Linux hem de Windows kullanıcılarının durumunu
    sırasıyla ve ayrı ayrı inceleyeceğiz. Dilerseniz öncelikle GNU/Linux kullanıcılarının durumuna
    bakalım:

    Not: Bu kitap boyunca bazı konuların GNU/Linux ve Windows kullanıcıları için ayrı ayrı
    anlatıldığını göreceksiniz. Ancak konular bu şekilde ayrılmış da olsa, ben size her ikisini
    de okumanızı tavsiye ederim. Çünkü bu bölümlerde her iki kullanıcı grubunun da ilgisini
    çekebilecek bilgilere rastlayacaksınız. Ayrıca bu bölümler farklı kullanıcı gruplarına hitap
    ediyor olsa da, aslında bu bölümlerin birbirini tamamlayıcı nitelikte olduğunu göreceksiniz.

    3.1 GNU/Linux Kullanıcıları

    GNU/Linux dağıtımlarına Python programlama dilini kurarken bazı noktaları göz önünde
    bulundurmamız gerekiyor. İşte bu bölümde bu önemli noktaların neler olduğunu
    inceleyeceğiz.

    3.1.1 Kurulu Python Sürümü

    Hemen hemen bütün GNU/Linux dağıtımlarında Python programlama dili kurulu olarak gelir.
    Örneğin Ubuntu’da Python zaten kuruludur.
    Ancak burada şöyle bir durum var:
    Daha önce de belirttiğimiz gibi, şu anda piyasada iki farklı Python serisi bulunuyor. Bunlardan
    birinin Python’ın 2.x serisi, ötekinin ise 3.x serisi olduğunu biliyorsunuz.
    Sisteminizde kurulu olan Python sürümünü denetlemek için komut satırında öncelikle şu
    komutu vermeyi deneyin (büyük ‘V’ ile):
    python -V

    Eğer bu komuttan Python 2.x.y şeklinde bir çıktı alıyorsanız, yani x ve y’den önceki kısım 2 ile
    başlıyorsa sisteminizde Python2 kuruludur.
    Ancak python -V komutundan Python 2.x.y şeklinde bir çıktı almanız sisteminizde sadece
    Python2’nin kurulu olduğunu göstermez. Sisteminizde Python2 ile birlikte Python3 de

    8
    Python 3 için Türkçe Kılavuz, Sürüm 3

    halihazırda kurulu olabilir. Örneğin Ubuntu GNU/Linux’un 12.10 sürümünden itibaren hem
    Python2, hem de Python3 sistemde kurulu vaziyettedir.
    Kullandığınız GNU/Linux dağıtımında durumun ne olduğunu denetlemek için yukarıdaki
    komutu bir de python3 -V şeklinde çalıştırmayı deneyebilirsiniz. Eğer bu komut size bir hata
    mesajı yerine bir sürüm numarası veriyorsa sisteminizde Python3 de kuruludur.
    Sisteminizdeki Python sürümlerine ilişkin daha kesin bir rapor için ise şu komutu
    kullanabilirsiniz:
    ls -g {,/usr{,/local}}/bin grep python

    Buradan aldığınız çıktıyı inceleyerek de sisteminizde birden fazla Python sürümünün kurulu
    olup olmadığını görebilirsiniz. [Bununla ilgili bir tartışma için bkz. http://goo.gl/RnRRc]
    Ayrıca kullandığınız GNU/Linux dağıtımında whereis python gibi bir komut vererek de
    sistemde kurulu Python sürümleri hakkında bilgi edinebilirsiniz.
    Eğer sisteminizde Python3 kuruluysa ve siz de kurulu olan Python3 sürümünden
    memnunsanız herhangi bir şey yapmanıza gerek yok. Farklı bir Python sürümü kurmaya
    çalışmadan yolunuza devam edebilirsiniz.

    3.1.2 Paket Deposundan Kurulum

    Sistemlerinde öntanımlı olarak herhangi bir Python3 sürümü kurulu olmayan veya
    sistemlerinde kurulu öntanımlı Python3 sürümünden memnun olmayan GNU/Linux
    kullanıcılarının, Python3’ü elde etmek için tercih edebileceği iki yol var: Birincisi ve benim
    size önereceğim yol, öncelikle kullandığınız dağıtımın paket yöneticisini kontrol etmenizdir.
    Python3 sisteminizde kurulu olmasa bile, dağıtımınızın depolarında bu sürüm paketlenmiş
    halde duruyor olabilir. O yüzden sisteminize uygun bir şekilde paket yöneticinizi açıp
    orada ‘python’ kelimesini kullanarak bir arama yapmanızı öneririm. Örneğin Ubuntu
    GNU/Linux dağıtımının paket depolarında Python3 var. Dolayısıyla Ubuntu kullanıcıları, eğer
    sistemlerinde zaten kurulu değilse (ki muhtemelen kuruludur), bu paketi Ubuntu Yazılım
    Merkezi aracılığıyla veya doğrudan şu komutla kurabilir:
    sudo apt-get install python3

    Bu komut, Python3’ü bütün bağımlılıkları ile beraber bilgisayarınıza kuracaktır.

    3.1.3 Kaynaktan Kurulum

    Peki ya kullandığınız dağıtımın depolarında Python3 yoksa veya depodaki Python3 sürümü
    eskiyse ve siz daha yeni bir Python3 sürümü kullanmak istiyorsanız ne yapacaksınız?
    Eğer dağıtımınızın depolarında Python3 paketini bulamazsanız veya depodaki sürüm sizi
    tatmin etmiyorsa, Python3’ü kaynaktan derlemeniz gerekecektir. Python3’ü kaynaktan
    derlerken iki seçeneğiniz var: Python3’ü root hakları ile kurmak veya Python3’ü yetkisiz
    kullanıcı olarak kurmak. Normal şartlar altında eğer kullandığınız sistemde root haklarına
    sahipseniz Python3’ü yetkili kullanıcı olarak kurmanızı tavsiye ederim.

    3.1. GNU/Linux Kullanıcıları 9


    Python 3 için Türkçe Kılavuz, Sürüm 3

    root Hakları İle Kurulum

    Python’ı kurmadan önce sistemimizde bulunması gereken bazı programlar var. Aslında bu
    programlar olmadan da Python kurulabilir, ancak eğer bu programları kurmazsanız Python’ın
    bazı özelliklerinden yararlanamazsınız. Bu programlar şunlardır:
    1. tcl-dev
    2. tk-dev
    3. zlib1g-dev
    4. ncurses-dev
    5. libreadline-dev
    6. libdb-dev
    7. libgdbm-dev
    8. libzip-dev
    9. libssl-dev
    10. libsqlite3-dev
    11. libbz2-dev
    12. liblzma-dev
    Bu programları, kullandığınız GNU/Linux dağıtımının paket yöneticisi aracılığıyla
    kurabilirsiniz. Yalnız paket adlarının ve gerekli paket sayısının dağıtımlar arasında farklılık
    gösterebileceğini unutmayın. Yukarıdaki liste Ubuntu için geçerlidir. Mesela yukarıda tcl-dev
    olarak verdiğimiz paket adı başka bir dağıtımda sadece tcl olarak geçiyor ya da yukarıdaki
    paketlerin bazıları kullandığınız dağıtımda halihazırda kurulu olduğu için sizin daha az
    bağımlılık kurmanız gerekiyor olabilir.
    Ubuntu’da yukarıdaki paketlerin hepsini şu komutla kurabilirsiniz:
    sudo apt-get install tcl-dev tk-dev
    zlib1g-dev ncurses-dev libreadline-dev
    libdb-dev libgdbm-dev libzip-dev libssl-dev
    libsqlite3-dev libbz2-dev liblzma-dev

    Not: Farklı GNU/Linux dağıtımlarında, Python3’ü kaynaktan derleme işleminden önce


    halihazırda kurulu olması gereken paketlerin listesi için http://goo.gl/zfLpX adresindeki
    tabloyu inceleyebilirsiniz.

    Yukarıdaki programları kurduktan sonra https://www.python.org/ftp/python/3.5.1 adresine


    gidiyoruz. Bu adreste, üzerinde ‘Python-3.5.1.tar.xz’ yazan bağlantıya tıklayarak sıkıştırılmış
    kurulum dosyasını bilgisayarımıza indiriyoruz.
    Daha sonra bu sıkıştırılmış dosyayı açıyoruz. Açılan klasörün içine girip, orada ilk olarak şu
    komutu veriyoruz:
    ./configure

    Bu komut, Python programlama dilinin sisteminize kurulabilmesi için gereken hazırlık


    aşamalarını gerçekleştirir. Bu betiğin temel olarak yaptığı iş, sisteminizin Python
    programlama dilinin kurulmasına uygun olup olmadığını, derleme işlemi için gereken

    10 Bölüm 3. Python Nasıl Kurulur?


    Python 3 için Türkçe Kılavuz, Sürüm 3

    yazılımların sisteminizde kurulu olup olmadığını denetlemektir. Bu betik ayrıca, bir sonraki
    adımda gerçekleştireceğimiz inşa işleminin nasıl yürüyeceğini tarif eden Makefile adlı bir
    dosya da oluşturur.
    Bu arada bu komutun başındaki ./ işareti, o anda içinde bulunduğunuz dizinde yer alan
    configure adlı bir betiği çalıştırmanızı sağlıyor. Eğer yalnızca configure komutu verirseniz,
    işletim sistemi bu betiği PATH dizinleri içinde arayacak ve bulamayacağı için de hata
    verecektir.
    ./configure komutu hatasız olarak tamamlandıktan sonra ikinci olarak şu komutu veriyoruz:
    make

    Burada aslında ./configure komutu ile oluşan Makefile adlı dosyayı make adlı bir program
    aracılığıyla çalıştırmış oluyoruz. make bir sistem komutudur. Bu komutu yukarıdaki gibi
    parametresiz olarak çalıştırdığımızda make komutu, o anda içinde bulunduğumuz dizinde
    bir Makefile dosyası arar ve eğer böyle bir dosya varsa onu çalıştırır. Eğer bir önceki
    adımda çalıştırdığımız ./configure komutu başarısız olduysa, dizinde bir Makefile dosyası
    oluşmayacağı için yukarıdaki make komutu da çalışmayacaktır. O yüzden derleme işlemi
    sırasında verdiğimiz komutların çıktılarını takip edip, bir sonraki aşamaya geçmeden önce
    komutun düzgün sonlanıp sonlanmadığından emin olmamız gerekiyor.
    make komutunun yaptığı iş, Python programlama dilinin sisteminize kurulması esnasında
    sistemin çeşitli yerlerine kopyalanacak olan dosyaları inşa edip oluşturmaktır. Bu komutun
    tamamlanması, kullandığınız bilgisayarın kapasitesine bağlı olarak biraz uzun sürebilir.
    make komutu tamamlandıktan sonra, komut çıktısının son satırlarına doğru şöyle bir uyarı
    mesajı görebilirsiniz:
    Python build finished, but the necessary bits
    to build these modules were not found: [burada
    eksik olan modül veya modüllerin adları sıralanır]

    Burada Python, sistemimizde bazı paketlerin eksik olduğu konusunda bizi uyarıyor. Uyarı
    mesajında bir veya daha fazla paketin eksik olduğunu görebilirsiniz. Eğer öyleyse, eksik
    olduğu bildirilen bütün paketleri kurmamız gerekiyor.
    Gerekli paketi ya da paketleri kurduktan sonra make komutunu tekrar çalıştırıyoruz. Endişe
    etmeyin, make komutunu ikinci kez verdiğimizde komutun tamamlanması birincisi kadar uzun
    sürmez. Eğer bu komutu ikinci kez çalıştırdığınızda yukarıdaki uyarı mesajı kaybolduysa şu
    komutla yolunuza devam edebilirsiniz:
    sudo make altinstall

    Daha önce kaynaktan program derlemiş olan GNU/Linux kullanıcılarının eli, make
    komutundan sonra make install komutunu vermeye gitmiş olabilir. Ama burada bizim make
    install yerine make altinstall komutunu kullandığımıza dikkat edin. make altinstall
    komutu, Python kurulurken klasör ve dosyalara sürüm numarasının da eklenmesini sağlar.
    Böylece yeni kurduğunuz Python, sistemdeki eski Python3 sürümünü silip üzerine yazmamış
    olur ve iki farklı sürüm yan yana varolabilir. Eğer make altinstall yerine make install
    komutunu verirseniz sisteminizde zaten varolan eski bir Python3 sürümüne ait dosya ve
    dizinlerin üzerine yazıp silerek o sürümü kullanılamaz hale getirebilirsiniz. Bu da sistemde
    beklenmedik problemlerin ortaya çıkmasına yol açabilir. Bu önemli ayrıntıyı kesinlikle gözden
    kaçırmamalısınız.
    Ayrıca bkz.:

    3.1. GNU/Linux Kullanıcıları 11


    Python 3 için Türkçe Kılavuz, Sürüm 3

    Python3’ün kaynaktan kurulumu ile ilgili bir tartışma için bkz.


    http://www.istihza.com/forum/viewtopic.php?f=50&t=544
    Derleme aşamalarının hiçbirinde herhangi bir hata mesajı almadıysanız kurulum başarıyla
    gerçekleşmiş ve sisteminize Python programlama dilinin 3.x sürümü kurulmuş demektir.

    Yetkisiz Kullanıcı Olarak Kurulum

    Elbette sudo make altinstall komutunu verip Python’ı kurabilmek için root haklarına sahip
    olmanız gerekiyor. Ama eğer kullandığınız sistemde bu haklara sahip değilseniz Python’ı bu
    şekilde kuramazsınız. Kısıtlı haklara sahip olduğunuz bir sistemde Python’ı ancak kendi ev
    dizininize ($HOME) kurabilirsiniz.
    Eğer Python’ı yetkisiz kullanıcı olarak kuracaksanız, öncelikle yukarıda bahsettiğimiz Python
    bağımlılıklarının sisteminizde kurulu olup olmadığını kontrol etmeniz lazım. Kullandığınız
    sistemde herhangi bir Python sürümü halihazırda kuruluysa, bu bağımlılıklar da muhtemelen
    zaten kuruludur. Ama değilse, bunları kurması için ya sistem yöneticisine ricada
    bulunacaksınız, ya da bu bağımlılıkları da tek tek kendi ev dizininize kuracaksınız. Eğer sistem
    yöneticisini bu bağımlılıkları kurmaya ikna edemezseniz, internet üzerinden bulabileceğiniz
    bilgiler yardımıyla bu bağımlılıkları tek tek elle kendiniz kurabilirsiniz. Ancak bu işlemin epey
    zaman alacağını ve süreç sırasında pek çok başka bağımlılıkla da karşılacağınızı söyleyebilirim.
    O yüzden ne yapıp edip sistem yöneticisini bağımlılıkları kurmaya ikna etmenizi tavsiye
    ederim... Tabii sistem yöneticisini bu bağımlılıkları kurmaya ikna edebilirseniz, istediğiniz
    Python sürümünü de kurmaya ikna edebileceğinizi düşünebiliriz! Ama biz burada sizin
    Python’ı kendinizin kuracağını varsayarak yolumuza devam edelim.
    Python’ı yetkisiz olarak kurmak, root haklarıyla kurmaya çok benzer. Aralarında yalnızca
    bir-iki ufak fark vardır. Mesela Python’ı yetkisiz kullanıcı olarak kurarken, ./configure
    komutunu şu şekilde vermeniz gerekiyor:
    ./configure --prefix=$HOME/python

    Python’ı root haklarıyla kurduğunuzda Python /usr dizini altına kurulacaktır. Ancak siz
    yetkisiz kullanıcı olduğunuz için /usr dizinine herhangi bir şey kuramazsınız. İşte bu yüzden,
    configure betiğine verdiğimiz –prefix parametresi yardımıyla Python’ı, yazma yetkimiz olan
    bir dizine kuruyoruz. Mesela yukarıdaki komut Python’ın /usr dizinine değil, ev dizininiz içinde
    python adlı bir klasöre kurulmasını sağlayacaktır. Elbette siz python yerine farklı bir dizin
    adı da belirleyebilirsiniz. Burada önemli olan nokta, –prefix parametresine vereceğiniz dizin
    adının, sizin yazmaya yetkili olduğunuz bir dizin olmasıdır.
    Bu komutu çalıştırdıktan sonra make komutunu normal bir şekilde veriyoruz. Bunun ardından
    da make install (veya duruma göre make altinstall) komutuyla Python’ı ev dizinimize
    kuruyoruz. Burada make install komutunu sudo‘suz kullandığımıza dikkat edin. Çünkü,
    dediğimiz gibi, siz yetkili kullanıcı olmadığınız için sudo komutunu kullanamazsınız.
    Python’ı bu şekilde ev dizininiz altında bir klasöre kurduğunuzda Python ile ilgili bütün
    dosyaların bu klasör içinde yer aldığını göreceksiniz. Bu klasörü dikkatlice inceleyip neyin
    nerede olduğuna aşinalık kazanmaya çalışın. Eğer mümkünse root hakları ile kurulmuş bir
    Python sürümünü inceleyerek, dosyaların iki farklı kurulum türünde nerelere kopyalandığını
    karşılaştırın.
    Böylece Python programlama dilini bilgisayarımıza nasıl kuracağımızı öğrenmiş olduk.
    Ama bu noktada bir uyarı yapmadan geçmeyelim: Python özellikle bazı GNU/Linux
    dağıtımlarında pek çok sistem aracıyla sıkı sıkıya bağlantılıdır. Yani Python, kullandığınız

    12 Bölüm 3. Python Nasıl Kurulur?


    Python 3 için Türkçe Kılavuz, Sürüm 3

    dağıtımın belkemiği durumunda olabilir. Bu yüzden Python’ı kaynaktan derlemek bazı


    riskler taşıyabilir. Eğer yukarıda anlatıldığı şekilde, kaynaktan Python derleyecekseniz, karşı
    karşıya olduğunuz risklerin farkında olmalısınız. Ayrıca GNU/Linux üzerinde kaynaktan
    program derlemek konusunda tecrübeli değilseniz ve eğer yukarıdaki açıklamalar size kafa
    karıştırıcı geliyorsa, mesela ‘Ben bu komutları nereye yazacağım?’ diye bir soru geçiyorsa
    aklınızdan, kesinlikle dağıtımınızla birlikte gelen Python sürümünü kullanmalısınız. Python
    sürümlerini başa baş takip ettiği için, ben size Ubuntu GNU/Linux’u denemenizi önerebilirim.
    Ubuntu’nun depolarında Python’ın en yeni sürümlerini rahatlıkla bulabilirsiniz. Ubuntu’nun
    resmi sitesine ubuntu.com adresinden, yerel Türkiye sitesine ise forum.ubuntu-tr.net
    adresinden ulaşabilirsiniz. Eğer şu anda kullandığınız GNU/Linux dağıtımından vazgeçmek
    istemiyorsanız, sabit diskinizden küçük bir bölüm ayırıp bu bölüme sadece Python
    çalışmalarınız için Ubuntu dağıtımını da kurmayı tercih edebilirsiniz.
    Yalnız küçük bir uyarı daha yapalım. Kaynaktan kurulum ile ilgili bu söylediklerimizden,
    Python’ın GNU/Linux’a kesinlikle kaynaktan derlenerek kurulmaması gerektiği anlamı
    çıkmamalı. Yukarıdaki uyarıların amacı, kullanıcının Python’ı kaynaktan derlerken sadece
    biraz daha dikkatli olması gerektiğini hatırlatmaktır. Örneğin bu satırların yazarı, kullandığı
    Ubuntu sisteminde Python3’ü kaynaktan derleyerek kullanmayı tercih ediyor ve herhangi bir
    problem yaşamıyor.
    Bu önemli uyarıları da yaptığımıza göre gönül rahatlığıyla yolumuza devam edebiliriz.
    Kurduğumuz yeni Python’ı nasıl çalıştıracağımızı biraz sonra göreceğiz. Ama önce Windows
    kullanıcılarının Python3’ü nasıl kuracaklarına bakalım.

    3.2 Windows Kullanıcıları

    Windows sürümlerinin hiçbirinde Python kurulu olarak gelmez. O yüzden Windows


    kullanıcıları, Python’ı sitesinden indirip kuracak.
    Bunun için öncelikle http://www.python.org/downloads adresine gidiyoruz.
    Bu adrese gittiğinizde, üzerinde ‘Download Python 3.5.1‘ ve ‘Download 2.7.11’ yazan, yan yana
    iki düğme göreceksiniz. Daha önce de söylediğimiz gibi, eğer bir Python sürüm numarası ‘2’
    ile başlıyorsa o sürüm 2.x serisine, yok eğer ‘3’ ile başlıyorsa 3.x serisine aittir. Dolayısıyla ilk
    düğme Python3 sürümünü, ikinci düğme ise Python2 sürümünü içerir.
    Biz bu kitapta Python’ın 3.x serisini anlatacağımız için (yeni Python sürümleri çıktığında
    o düğmeler üzerinde yazan sürüm numaraları değişecek de olsa), ‘3’ ile başlayan sürüm
    numarasını içeren düğmeye tıklamaya özen gösteriyoruz. Bu düğmeye tıkladığınızda
    bilgisayarınıza .exe uzantılı kurulum dosyası inecek. Bu dosyaya çift tıklayarak kurulum
    programını başlatabilirsiniz.

    Not: Eğer indireceğiniz Python sürümünün mimarisini ve sürümünü kendiniz


    seçmek isterseniz https://www.python.org/ftp/python/3.5.1 adresinden kendinize uygun olan
    sürümü bulup indirebilirsiniz.

    Kurulum dosyasına çift tıkladığınızda karşınıza ilk gelen ekranda, pencerenin alt tarafında şu
    kutucukları göreceksiniz:
    1. Install launcher for all users (recommended)
    2. Add Python 3.5 to PATH

    3.2. Windows Kullanıcıları 13


    Python 3 için Türkçe Kılavuz, Sürüm 3

    Burada ilk kutucuk zaten seçilidir. Bunu bu şekilde bırakabilirsiniz. İkinci kutucuk ise
    Python’ı yola eklememizi, böylece yalnızca python komutu vererek Python’ı başlatabilmemizi
    sağlayacak. O yüzden oradaki ikinci kutucuğu da işaretliyoruz.
    Aynı pencerenin üst tarafında ise şu seçenekleri göreceksiniz:
    1. -> Install Now
    2. -> Customize Installation
    Burada ‘Install Now’ yazan kısma tıklayarak kurulumu başlatıyoruz.
    Eğer Python’ın bilgisayarda nereye kurulacağını ve başka birtakım kurulum özelliklerini
    değiştirmek istiyorsanız ‘Customize Installation’ yazılı kısma tıklayabilirsiniz. Ben bu kitapta
    sizin ‘Install Now’ yazan kısma tıklayarak kurulum yaptığınızı varsayacağım.

    Not: Python’ın resmi sitesinde dolaşırken kurulum dosyaları arasında, ‘web-based installer’
    (web tabanlı kurulum betiği) adlı bir kurulum dosyası görebilirsiniz. Bu kurulum dosyası,
    Python’ın çalışması için gereken dosyaları kurulum esnasında internetten indirip kuran,
    1MB’dan küçük bir kurulum programı içerir. Dolayısıyla eğer kurulumu bu dosyadan
    yapacaksanız, kesintisiz bir internet bağlantısına ihtiyacınız olacak.

    Uyarı: Eğer Windows’ta Python’ı kurmaya çalışırken hata alıyorsanız, muhtemelen işletim
    sisteminiz güncel değildir. Örneğin Windows 7’de Python kurabilmeniz için, SP1 (Service
    Pack 1) kurulu olmalıdır. Windows güncellemelerini kurduktan sonra Python’ı kurmayı
    tekrar deneyin.

    3.3 Python Kurulum ve Çalışma Dizini

    Python programlama dilini, kullandığımız işletim sistemine nasıl kurabileceğimizi bilmek


    kadar önemli bir konu da Python’ı hangi dizine kurduğumuzu bilmektir. Zira programcılık
    maceramız boyunca karşılaşacağımız bazı sorunlar, Python’ın kurulu olduğu dizine gitmemizi
    gerektirecek, üstelik kendi yazdığımız bazı programlarda da Python’ın kurulu olduğu dizinde
    çeşitli işlemler yapmak ihtiyacı duyacağız. Ayrıca bazı durumlarda, o anda çalışan Python
    sürümünün hangi konumdan çalıştığını tespit etmemiz de gerekebilir.
    İşte bu sebeplerden, Python’ın hangi dizine kurulduğunu mutlaka biliyor olmamız lazım.
    Python’ın, işletim sisteminizde hangi dizine kurulduğu, Python’ı nasıl kurduğunuza bağlı
    olarak farklılık gösterir.
    GNU/Linux dağıtımlarında Python genellikle /usr/lib/python 3.5 dizininde kurulur. Ama
    elbette, eğer siz Python’ı kaynaktan derlediyseniz, derleme sırasında configure betiğine
    verdiğiniz –prefix parametresi yardımıyla Python’ın kurulum dizinini kendiniz de belirlemiş
    olabilirsiniz.
    Windows’ta Python programlama dilini aynen bu kitapta gösterdiğimiz şekilde kurduysanız,
    Python %LOCALAPPDATA%\Programs\Python dizini içine kurulacaktır. Ancak eğer kurulum
    penceresinde ‘Customize Installation’ düğmesine basarak kurulumu özelleştirdiyseniz
    ve ‘Install for all users’ seçeneğini işaretlediyseniz Python %PROGRAMFILES% veya
    %PROGRAMFILES(x86) adlı çevre değişkenlerinin işaret ettiği dizin içine kurulacaktır.

    14 Bölüm 3. Python Nasıl Kurulur?


    BÖLÜM 4

    Python Nasıl Çalıştırılır?

    Bir önceki bölümde, Python’ı farklı platformlara nasıl kuracağımızı bütün ayrıntılarıyla
    anlattık. Bu bölümde ise kurduğumuz bu Python programını hem GNU/Linux’ta hem de
    Windows’ta nasıl çalıştıracağımızı göreceğiz. Öncelikle GNU/Linux kullanıcılarının Python’ı
    nasıl çalıştıracağına bakalım.

    4.1 GNU/Linux Kullanıcıları

    Geçen bölümlerde gördüğünüz gibi, Python3’ü GNU/Linux sistemleri üzerine farklı şekillerde
    kurabiliyoruz. Bu bölümde, her bir kurulum türü için Python3’ün nasıl çalıştırılacağını ayrı
    ayrı inceleyeceğiz.

    4.1.1 Kurulu Python3’ü Kullananlar

    Eğer sisteminizde zaten Python3 kurulu ise komut satırında yalnızca şu komutu vererek
    Python3’ü başlatabilirsiniz:
    python

    Ancak daha önce de dediğimiz gibi, 20.04.2016 tarihi itibariyle pek çok GNU/Linux
    dağıtımında öntanımlı olarak Python2 kuruludur. Dolayısıyla python komutunu verdiğinizde
    çalışan sürüm muhtemelen Python2 olacaktır. Bu yüzden sistemimizde öntanımlı olarak
    hangi sürümün kurulu olduğuna ve python komutunun hangi sürümü başlattığına çok dikkat
    etmelisiniz.
    Yine daha önce de söylediğimiz gibi, sisteminizde hem Python2 hem de Python3 zaten
    kurulu durumda olabilir. O yüzden yukarıdaki komutu bir de python3 şeklinde vermeyi
    deneyebilirsiniz.
    Örneğin Ubuntu GNU/Linux dağıtımının 12.10 sürümünden itibaren python komutu
    Python2’yi; python3 komutu ise Python3’ü çalıştırıyor.

    4.1.2 Python3’ü Depodan Kuranlar

    Dediğimiz gibi, 20.04.2016 tarihi itibariyle GNU/Linux dağıtımlarında öntanımlı Python


    sürümü ağırlıklı olarak Python2’dir. Dolayısıyla python komutu Python’ın 2.x sürümlerini
    çalıştırır. Bu durumdan ötürü, herhangi bir çakışmayı önlemek için GNU/Linux dağıtımları
    Python3 paketini farklı bir şekilde adlandırma yoluna gider. Şu anda piyasada bulunan

    15
    Python 3 için Türkçe Kılavuz, Sürüm 3

    dağıtımların ezici çoğunluğu Python3 paketini ‘python3’ şeklinde adlandırıyor. O yüzden


    GNU/Linux kullanıcıları, eğer paket yöneticilerini kullanarak Python kurulumu gerçekleştirmiş
    iseler, komut satırında şu komutu vererek Python3’ü başlatabilirler:
    python3

    Bu komutun ardından şuna benzer bir ekranla karşılaşmış olmalısınız:


    istihza@ubuntu:~$ # python3 Python 3.5.1 (default, 20.04.2016, 12:24:55) [GCC 4.4.7
    20120313 (Red Hat 4.4.7-3)] on linux Type “help”, “copyright”, “credits” or “license” for more
    information. >>>
    Eğer yukarıdaki ekranı gördüyseniz Python’la programlama yapmaya hazırsınız demektir.
    Değilse, geriye dönüp işlerin nerede ters gittiğini bulmaya çalışabilirsiniz.
    Bu aşamada işlerin nerede ters gitmiş olabileceğine dair birkaç ipucu verelim:
    1. Python3 kurulurken paket yöneticinizin herhangi bir hata vermediğinden, programın
    sisteminize başarıyla kurulduğundan emin olun. Bunun için Python3’ün kurulu paketler
    listesinde görünüp görünmediğini denetleyebilirsiniz.
    2. python3 komutunu doğru verdiğinize emin olun. Python programlama diline özellikle
    yeni başlayanların en sık yaptığı hatalardan biri python kelimesini yanlış yazmaktır.
    Python yerine yanlışlıkla pyhton, pyton veya phyton yazmış olabilirsiniz. Ayrıca python3
    komutunun tamamen küçük harflerden oluştuğuna dikkat edin. Python ve python
    bilgisayar açısından aynı şeyler değildir.
    3. Kullandığınız dağıtımın Python3 paketini adlandırma politikası yukarıda anlattığımızdan
    farklı olabilir. Yani sizin kullandığınız dağıtım, belki de Python3 paketini farklı bir şekilde
    adlandırmıştır. Eğer durum böyleyse, dağıtımınızın yardım kaynaklarını (wiki, forum, irc,
    yardım belgeleri, kullanıcı listeleri, vb.) kullanarak ya da istihza.com/forum adresinde
    sorarak Python3’ün nasıl çalıştırılacağını öğrenmeyi deneyebilirsiniz.
    Gelelim Python3’ü kaynaktan derlemiş olanların durumuna...

    4.1.3 Python3’ü root Olarak Derleyenler

    Eğer Python3’ü önceki bölümlerde anlattığımız şekilde kaynaktan root hakları ile
    derlediyseniz python3 komutu çalışmayacaktır. Bunun yerine şu komutu kullanmanız
    gerekecek:
    python3.5

    Not: Kurduğunuz Python3 sürümünün 3.5 olduğunu varsayıyorum. Eğer farklı bir
    Python3 sürümü kurduysanız, elbette başlatıcı komut olarak o sürümün adını kullanmanız
    gerekecektir. Mesela: python3.0 veya python3.1. Bu arada python3.5 komutunda 35
    sayısının rakamları arasında bir adet nokta işareti olduğunu gözden kaçırmıyoruz...

    Tıpkı paket deposundan kurulumda olduğu gibi, eğer yukarıdaki komut Python’ı çalıştırmanızı
    sağlamıyorsa, kurulum esnasında bazı şeyler ters gitmiş olabilir. Örneğin kaynaktan
    kurulumun herhangi bir aşamasında bir hata almış olabilirsiniz ve bu da Python’ın
    kurulumunu engellemiş olabilir.
    Gördüğünüz gibi, Python’ı kaynaktan derleyenler Python programlama dilini çalıştırabilmek
    için Python’ın tam sürüm adını belirtiyor. Dilerseniz bu şekilde çalışmaya devam edebilirsiniz.
    Bunun hiçbir sakıncası yok. Ancak ben size kolaylık açısından, /usr/bin/ dizini altına py3

    16 Bölüm 4. Python Nasıl Çalıştırılır?


    Python 3 için Türkçe Kılavuz, Sürüm 3

    adında bir sembolik bağ yerleştirmenizi tavsiye ederim. Böylece sadece py3 komutunu
    vererek Python3’ü başlatabilirsiniz.
    Peki bunu nasıl yapacağız?
    Python kaynaktan derlendiğinde çalıştırılabilir dosya /usr/local/bin/ dizini içine Python 3.5
    (veya kurduğunuz Python3 sürümüne bağlı olarak Python3.0 ya da Python3.1 ) adıyla
    kopyalanır. Bu nedenle Python3’ü çalıştırabilmek için python3.5 komutunu kullanmamız
    gerekir. Python3’ü çalıştırabilmek için mesela sadece py3 gibi bir komut kullanmak istiyorsak
    yapacağımız tek şey /usr/local/bin/ dizini içindeki python 3.5 adlı dosyaya /usr/bin dizini
    altından, py3 adlı bir sembolik bağ oluşturmak olacaktır. Bunun için ln komutunu
    kullanacağız:
    ln -s /usr/local/bin/python3.5 /usr/bin/py3
    Tabii bu komutu yetkili kullanıcı olarak vermeniz gerektiğini söylememe herhalde gerek
    yoktur. Bu komutu verdikten sonra artık sadece py3 komutu ile Python programlama dilini
    başlatabilirsiniz.

    Çok Önemli Bir Uyarı

    Bir önceki adımda anlattığımız gibi Python3’ü resmi sitesinden indirip kendiniz derlediniz.
    Gayet güzel. Ancak bu noktada çok önemli bir konuya dikkatinizi çekmek isterim. En baştan
    beri söylediğimiz gibi, Python programlama dili GNU/Linux işletim sistemlerinde çok önemli
    bir yere sahiptir. Öyle ki bu programlama dili, kullandığınız dağıtımın belkemiği durumunda
    olabilir.
    Örneğin Ubuntu GNU/Linux dağıtımında pek çok sistem aracı Python ile yazılmıştır. Bu
    yüzden, sistemdeki öntanımlı Python sürümünün ne olduğu ve dolayısıyla python komutunun
    hangi Python sürümünü çalıştırdığı çok önemlidir. Çünkü sisteminizdeki hayati bazı araçlar,
    python komutunun çalıştırdığı Python sürümüne bel bağlamış durumdadır. Dolayısıyla sizin
    bu python komutunun çalıştırdığı Python sürümüne dokunmamanız gerekir.
    Mesela eğer kullandığınız işletim sisteminde python komutu Python’ın 2.x sürümlerinden
    birini çalıştırıyorsa sembolik bağlar veya başka araçlar vasıtasıyla python komutunu Python’ın
    başka bir sürümüne bağlamayın. Bu şekilde bütün sistemi kullanılmaz hale getirirsiniz.
    Elbette eğer kurulum aşamasında tarif ettiğimiz gibi, Python3’ü make install yerine make
    altinstall komutu ile kurmaya özen gösterdiyseniz, sonradan oluşturduğunuz bağ dosyasını
    silip python komutunu yine sistemdeki öntanımlı sürüme bağlayabilirsiniz. Bu şekilde her
    şey yine eski haline döner. Ama eğer Python’ı make install komutuyla kurmanızdan ötürü
    sistemdeki öntanımlı Python sürümüne ait dosyaları kaybettiyseniz sizin için yapılacak fazla
    bir şey yok... Sistemi tekrar eski kararlı haline getirmek için kan, ter ve gözyaşı dökeceksiniz...
    Aynı şekilde, kullandığınız dağıtımda python3 komutunun öntanımlı olarak belirli bir
    Python sürümünü başlatıp başlatmadığı da önemlidir. Yukarıda python komutu ile ilgili
    söylediklerimiz python3 ve buna benzer başka komutlar için de aynen geçerli.
    Örneğin, Ubuntu GNU/Linux dağıtımında python komutu sistemde kurulu olan Python 2.x
    sürümünü; python3 komutu ise sistemde kurulu olan Python 3.x sürümünü çalıştırdığından,
    biz kendi kurduğumuz Python sürümleri için, sistemdeki sürümlerle çakışmayacak isimler
    seçtik. Mesela kendi kurduğumuz Python3 sürümünü çalıştırmak için py3 gibi bir komut tercih
    ettik.
    İyi bir test olarak, Python programlama dilini kendiniz kaynaktan derlemeden önce şu
    komutun çıktısını iyice inceleyebilirsiniz:

    4.1. GNU/Linux Kullanıcıları 17


    Python 3 için Türkçe Kılavuz, Sürüm 3

    ls -g {,/usr{,/local}}/bin

    nest...

    oksabron ne için kullanılır patates yardımı başvurusu adana yüzme ihtisas spor kulübü izmit doğantepe satılık arsa bir örümceğin kaç bacağı vardır

    © 2024 Toko Cleax. Seluruh hak cipta.