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.
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.
Belgelerde bir değişiklik yapmak ve belgeleri inşa etmek için dosyasına başvurun.
Çevrimdışı olarak kullandığınız belgelerin zaman ile güncelliğini yitirip https://python-istihza.yazbel.com/ adresindeki belgelerin gerisinde kalabileceğini unutmayın.
dosyasını bu link aracılığı ile indirip kullanabilirsiniz.
dosyasını bu link aracılığı ile indirip kullanabilirsiniz.
dosyasını bu link aracılığı ile indirip kullanabilirsiniz.
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.
Her zaman YazBel forumunun Python kategorisinde bir konu açarak aklınızdaki soruları sorabilirsiniz. Topluluk size yardım etmekten mutluluk duyacaktır.
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.
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.
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.
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
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
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
ii
14.3 İlgili Araçlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
14.4 Örnek Uygulamalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
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
24 Sayılar 396
24.1 Sayıların Metotları . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
24.2 Aritmetik Fonksiyonlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
iv
28.1 8 Bitlik bir Sistem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
28.2 Hata Kontrolü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
28.3 Karakterlerin Temsili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
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
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
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
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
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
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
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
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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?
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.
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.
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.
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.
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.
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
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.
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
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.:
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
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
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.
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.
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.
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.
15
Python 3 için Türkçe Kılavuz, Sürüm 3
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
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.
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: