1. Önsöz
Bu belgenin PDF dosyası, |BURADA| adresinde mevcuttur.
Bu belgedeki örnekler |BURADA| adresinde mevcuttur.
Bu belge, çeşitli alanlarda Python betiklerinin bir listesini sunmaktadır:
- dilin temelleri;
- veritabanı yönetimi MySQL ve PostgreSQL;
- ağ programlama TCP/ IP (HTTP, POP3, IMAP, SMTP protokolleri);
- MVC web programlama ile FLASK Çerçevesi;
- üç katmanlı mimariler ve arayüzler aracılığıyla programlama;
Bu, kapsamlı bir Python dersi değil, daha önce Perl, PHP gibi bir betik dili kullanmış geliştiricilere yönelik örneklerden oluşan bir derlemedir, VBScript gibi bir betik dilini kullanmış olan veya Java ya da C# gibi tipli dillere alışkın olan ve nesne yönelimli bir betik dilini keşfetmekle ilgilenen geliştiriciler için hazırlanmıştır. Bu belge, hiç programlama yapmamış veya çok az programlama deneyimi olan okuyucular için pek uygun değildir.
Bu belge aynı zamanda bir "iyi uygulamalar" derlemesi de değildir. Deneyimli bir geliştirici, bazı kodların daha iyi yazılabileceğini düşünebilir. Bu belgenin tek amacı, Python 3 diline ve Flask Framework'üne giriş yapmak isteyen kişilere örnekler sunmaktır. Kullanıcı daha sonra diğer belgelerle öğrenimini derinleştirecektir.
Komut dosyaları açıklamalıdır ve çalıştırma sonuçları da verilmiştir. Bazen ek açıklamalar da sunulmaktadır. Bu belge, aktif bir okuma gerektirir: bir komut dosyasını anlamak için hem kodunu, hem açıklamalarını hem de çalıştırma sonuçlarını okumak gerekir.
Belgedeki örnekler |BURADA| adresinde mevcuttur:

Bu belge, Haziran 2011'de yayınlanan eski bir belgenin (|https://tahe.developpez.com/tutoriels-cours/python/|) güncellenmiş halidir. 2011 tarihli belge, Python 2.7 yorumlayıcısı ile oluşturulmuştu. O zamandan bu yana, Python'un yeni sürümleri (3.x) piyasaya çıkmıştır. Şubat 2020 itibarıyla sürüm 3.8'e gelinmiştir. 3.x sürümleri, sürümler arası taşınabilirlikte bir kesintiye yol açmıştır: Python 2.7 altında çalışan kodlar, Python 3.x altında kullanılamayabilir. Bu durum özellikle konsol yazımı için geçerlidir. 2.7 sürümünde [print "toto"] yazılabilirken, 3.x sürümünde [print("toto")] yazılması gerekir: parantez eklenmesi gerekir. Bu basit değişiklik, 2011 tarihli belgeyle birlikte sağlanan kodların çoğunun Python 3.x ile doğrudan kullanılamaz hale gelmesine neden olmaktadır. Bu kodların değiştirilmesi gerekmektedir.
Bu yeni belge, 2011 kodlarını Python 3.8 ile çalıştırılabilir hale getirmekle yetinmiyor:
- TCP-IP programlama ve veritabanı kullanımı ile ilgili bölümlerde önemli değişiklikler yapılmıştır;
- sadece bir giriş niteliğinde olan web programlama bölümü, artık FLASK çerçevesini kullanan eksiksiz bir ders haline gelmiştir;
Bu dersi hazırlarken alışılmadık bir yaklaşım izledim: PHP [Introduction au langage PHP7 par l’exemple] dersini uyarladım. Dolayısıyla, geleneksel Python veya Flask derslerinin yapılarını takip etmedim. Her şeyden önce, PHP 7'de yaptıklarımı Python 3 ile nasıl gerçekleştirebileceğimi öğrenmek istedim. Sonuç olarak, PHP 7 kursundaki tüm örnekleri Python 3 / Flask kullanarak yeniden yapabildim.
Bu belgede hatalar veya eksiklikler olabilir. Okuyucular, bunları bildirmek için |forum| tartışma akışını kullanabilirler.
Belgenin içeriği şu şekildedir:
Bölüm | Kod klasörü | İçerik |
Dersin tanıtımı | ||
Çalışma Ortamının Kurulumu | ||
[bases] | Python dilinin temelleri – dil yapıları – veri türleri – fonksiyonlar – konsol çıktısı – biçimlendirme dizeleri – tür dönüştürme – listeler – sözlükler – düzenli ifadeler | |
[strings] | Dizgi gösterimi – <str> sınıfının yöntemleri – UTF-8'te dizgilerin kodlanması / kodunun çözülmesi | |
[exceptions] | İstisna yönetimi | |
[fonctions] | Değişkenlerin kapsamı – parametre aktarım yöntemi – modüllerin kullanımı – Python Yolu – adlandırılmış parametreler – özyinelemeli işlevler | |
[fichiers] | Metin dosyasını okuma/yazma – UTF-8 ile kodlanmış dosyaların yönetimi – jSON dosyalarının yönetimi | |
[impots/v01] | Uygulama alıştırmasının 1. versiyonu, gelir vergisi hesaplaması. Uygulama 18 versiyona ayrılmıştır – 1. versiyon, prosedürel bir çözümü uygulamaktadır | |
[imports] | Modüllerin içe aktarılması yoluyla bir uygulamanın bağımlılıklarının yönetimi – bir bağımlılık yönetimi yöntemi sunulmaktadır – bu yöntem belgenin tamamında kullanılmaktadır – Python Yolu yönetimi | |
[impots/v02] | Uygulamanın 2. sürümü, 1. sürümü temel alarak tüm yapılandırma sabitlerini, Python yolunu da yöneten bir yapılandırma dosyasında bir araya getirir | |
[impots/v03] | Uygulamanın 3. sürümü, bir modülde kapsüllenmiş işlevler kullanarak 2. sürümü devralır – bağımlılık yönetimi yapılandırma yoluyla yapılır – vergi hesaplaması için gerekli verileri okumak ve hesaplama sonuçlarını yazmak üzere jSON dosyasının eklenmesi | |
[classes/01] | Sınıflar – miras – yöntemler ve özellikler – getter / setter – oluşturucu – özellik [__dict__] | |
[classes/02] | Belgenin geri kalanında kullanılan [BaseEntity] ve [MyException] sınıflarının tanıtımı – [BaseEntity], nesne / sözlük dönüşümlerini kolaylaştırır | |
[troiscouches] | Katmanlı mimari ve arayüzlerle programlama. Bu bölüm, belgenin geri kalanında kullanılan programlama yöntemlerini tanıtmaktadır | |
[impots/v04] | Uygulamanın 4. sürümü – bu sürüm, katmanlı mimari, arayüzlerle programlama ve [BaseEntity] ile [MyException] sınıflarından türetilen sınıfların kullanımıyla bir çözüm sunar. | |
[databases/mysql] | SGBD'in kurulumu MySQL – veritabanına bağlanma – tablo oluşturma – komutların yürütülmesi SQL SELECT, UPDATE, DELETE, INSERT – işlem – parametreli sorgular SQL | |
[databases/postgresql] | SGBD'in kurulumu PostgreSQL – veritabanına bağlanma – tablo oluşturma – komutların yürütülmesi SQL SELECT, UPDATE, DELETE, INSERT – işlem – parametreli sorgular SQL | |
[databases/anysgbd] | SGBD'ten bağımsız kod yazımı | |
[databases/sqlalchemy] | ORM (Nesne-İlişkisel Eşleştirici) SqlAlchemy – bir ORM, farklı SGBD ile birleşik bir şekilde çalışmaya olanak tanır - sınıf / tablo eşleme SQL – tablo görüntü sınıfları üzerinde işlemler SQL | |
[impots/v05] | Vergi hesaplama uygulamasının 5. sürümü – 04 sürümünün katmanlı mimarisinin veORM SqlAlchemy ile SGBD MySQL ve PostgreSQL üzerinde çalışmak | |
[inet] | İnternet programlama – TCP / IP protokolü (Aktarım Kontrol Protokolü / İnternet Protokolü) – HTTP (HyperText Aktarım Protokolü) – SMTP (Basit Posta Aktarım Protokolü) – POP (Posta Ofisi Protokolü) – IMAP (İnternet Mesaj Erişim Protokolü) | |
[flask] | Flask web çerçevesiyle web hizmetleri – bir sayfanın görüntülenmesi HTML – web hizmeti jSON – istekler GET ve POST – bir web oturumunun yönetimi | |
[impots/http-servers/01] [impots/http-clients/01] | Uygulama alıştırmasının 6. sürümü - Çok katmanlı mimariye sahip jSON vergi hesaplama web hizmetinin oluşturulması - Bu sunucu için çok katmanlı mimariye sahip bir web istemcisinin yazılması – istemci / sunucu programlama – [requests] modülünün kullanımı | |
[impots/http-servers/02] [impots/http-clients/02] | Uygulamanın 7. sürümü – 6. sürüm geliştirildi: istemci ve sunucu çok iş parçacıklıdır – istemci / sunucu iletişimini günlüğe kaydetmek için [Logger] yardımcı programları – uygulama yöneticisine e-posta göndermek için [SendMail] | |
[impots/http-servers/03] [impots/http-clients/03] | Uygulama alıştırmasının 8. sürümü – 7. sürüm, bir web oturumu kullanılarak geliştirilmiştir | |
[xml] | XML (eXtended İşaretleme Dili) yönetimi, [xmltodict] modülü ile | |
[impots/http-servers/04] [impots/http-clients/04] | Uygulama alıştırmasının 9. sürümü – 8. sürüm, XML formatında istemci/sunucu iletişimi sağlayacak şekilde değiştirilmiştir; | |
[impots/http-servers/05] [impots/http-clients/05] | Uygulama alıştırmasının 10. sürümü – N vergi mükellefini N istekle işlemek yerine GET, tek bir istek kullanılır POST ve N vergi mükellefi istek gövdesinde yer alır POST | |
[impots/http-servers/06] [impots/http-clients/06] | Uygulama alıştırmasının 11. sürümü – uygulamanın istemci/sunucu mimarisi değiştirilmiştir: [métier] katmanı sunucudan istemciye taşınmıştır | |
[impots/http-servers/07] | Uygulama alıştırmasının 12. sürümü – bu sürümde, müşterinin talebine göre jSON veya XML'i ayırt etmeden sunan bir MVC (Model – View – Denetleyici) sunucusunu hayata geçirir; bu sunucu, istemcinin talebine göre jSON, XML ve HTML'i ayırt etmeden sunar. Bu bölümde, sunucunun jSON ve XML sürümleri uygulanmaktadır | |
[impots/http-clients/07] | Sürüm 12'deki MVC sunucusunun jSON ve XML istemcilerinin uygulanması | |
[impots/http-servers/07] | Sürüm 12'deki HTML sunucusunun kurulumu – CSS Bootstrap çerçevesinin kullanımı – | |
[impots/http-servers/08] | Uygulama alıştırmasının 13. sürümü – 12. sürüm kodunun yeniden düzenlenmesi – [flask_session] modülü ve bir Redis sunucusu ile oturum yönetimi – şifrelenmiş şifrelerin kullanımı | |
[impots/http-servers/09] [impots/http-clients/09] | Uygulama alıştırmasının 14. sürümü – URL'in CSRF jetonu ile uygulanması (Cross Site Request Forgery) | |
[impots/http-servers/10] | Uygulama alıştırmasının 15. sürümü – iki tür eylemi yönetmek için 14. sürümün kodunun yeniden düzenlenmesi: ASV (Action Show View), yalnızca sunucunun durumunu değiştirmeden bir görünümü görüntülemek için kullanılır; ADS (Do Something Eylemi), sunucunun durumunu değiştiren bir eylem gerçekleştirir – bu eylemlerin tümü, ASV eylemine bir yönlendirme ile sona erer – bu, istemci tarayıcısındaki sayfa yenilemelerini doğru bir şekilde yönetmeyi sağlar | |
[impots/http-servers/11] | Uygulamanın 16. sürümü – önekli URL eylemlerinin yönetimi | |
[impots/http-servers/12] | Uygulamanın 17. sürümü – 16. sürümün Apache / Windows sunucusuna taşınması | |
[impots/http-servers/13] | Uygulamanın 18. sürümü – 17. sürümdeki bir hatayı düzeltir |
Uygulama alıştırmasının son sürümü, aşağıdaki mimariye sahip bir vergi hesaplama istemci/sunucu uygulamasıdır:

Yukarıdaki [web] katmanı, MVC mimarisiyle uygulanmıştır:

Belgenin içeriği oldukça yoğundur. Belgeyi sonuna kadar okuyan okuyucu, Python / Flask ile MVC web programlama konusunda iyi bir fikir edinecek ve bunun ötesinde, diğer dillerde MVC web programlama konusunda da iyi bir fikir edinecektir.
Ders okumaktansa kodu görmek, test etmek ve değiştirmek isteyen okuyucu şu adımları izleyebilir:
-
bir çalışma ortamı kurun:
- bir Python yorumlayıcısı;
- IDE PyCharm Topluluğu;
- Laragon (Apache sunucusu, SGBD MySQL, Redis sunucusu);
- SGBD PostgreSQL;
- HTTP Postman istemcisi;
- hMailServer e-posta sunucusu;
-
örnek kodları incelemek |BURADA|:
- her klasörde, o klasörü dersin bir bölümüne bağlayan ve içeriğini özetleyen bir [README.md] dosyası bulunur:

[README.md] dosyası şuna benzer:

Okuyucunun dersin tamamını okuması pek olası değildir:
- yeni başlayan bir okuyucu 1'den 15'e kadar olan bölümleri okuyup orada durabilir. Daha sonra bu kursa geri dönmeden önce kendi Python betiklerini yazmaya zaman ayırabilir;
- Python'un temellerine sahip olan ve veritabanları ile ORM (Nesne-İlişkisel Eşleştirici) [sqlalchemy]'e giriş yapmak isteyen okuyucu, 16. ila 20. bölümlerle yetinebilir;
- İnternet programlamasına (HTTP, SMTP, POP3, IMAP) giriş yapmak isteyen okuyucu, 21. bölümü okuyabilir. Bu bölüm oldukça karmaşıktır ve ileri düzey komut dosyalarını ele almaktadır. Bu bölüm iki farklı açıdan okunabilir:
- İnternet protokollerini keşfetmek için;
- bu protokolleri kullanan komut dosyalarını elde etmek için;
- Python'un temellerine sahip olan ve Flask çerçeve ile web programlamaya başlamak isteyen okuyucu, 22. bölümü okuyabilir;
- Flask çerçeve ile web programlamayı derinleştirmek isteyen okuyucu, 23. ila 38. bölümleri inceleyebilir. Bu bölümlerde giderek daha karmaşık hale gelen istemci/sunucu uygulamaları ve MVC geliştirme modeline (Model – Görünüm – Denetleyici) geliştirilir. Bu uygulama 32. bölümde geliştirilir. Burada durulabilir. Sonraki bölümlerde temel nitelikte olmayan değişiklikler yer almaktadır;
Serge Tahé, Eylül 2020