Python Dersleri: 0'dan İleri Seviyeye Kadar Python Eğitimi
![]() |
Python Dersleri: 0'dan İleri Seviyeye Kadar Python Eğitimi |
1. Giriş: Python Nedir ve Neden Öğrenmelisiniz?
Python, Guido van Rossum tarafından 1991 yılında geliştirilen, açık kaynaklı, yüksek seviyeli ve çok amaçlı bir programlama dilidir. Basit sözdizimi ve geniş kütüphane desteği sayesinde, hem yeni başlayanlar hem de profesyonel geliştiriciler tarafından tercih edilmektedir.
1.1 Python'un Avantajları
-
Kolay Okunabilirlik: Python'un sözdizimi, İngilizce'ye yakın olduğu için kodlar daha okunabilir ve anlaşılırdır.
-
Geniş Kütüphane Desteği: Veri analizi, yapay zeka, web geliştirme gibi birçok alanda kullanılabilecek zengin kütüphanelere sahiptir.
-
Topluluk Desteği: Geniş ve aktif bir kullanıcı topluluğu sayesinde, karşılaşılan sorunlara hızlı çözümler bulunabilir.
1.2 Python Nerelerde Kullanılır?
-
Web Geliştirme: Django, Flask gibi framework'ler ile dinamik web uygulamaları geliştirilebilir.
-
Veri Analizi: Pandas, NumPy gibi kütüphaneler ile büyük veri setleri analiz edilebilir.
-
Makine Öğrenmesi: Scikit-learn, TensorFlow gibi araçlarla yapay zeka uygulamaları geliştirilebilir.
-
Otomasyon: Günlük görevlerin otomatikleştirilmesi için script'ler yazılabilir.
2. Python Kurulumu ve Geliştirme Ortamı
Python ile çalışmaya başlamadan önce, uygun bir geliştirme ortamı kurulmalıdır.
2.1 Python Kurulumu
Python'un en son sürümünü resmi web sitesinden indirerek kurabilirsiniz. Kurulum sırasında "Add Python to PATH" seçeneğini işaretlemeyi unutmayın.
2.2 Geliştirme Ortamları
-
IDLE: Python ile birlikte gelen basit bir geliştirme ortamıdır.
-
PyCharm: JetBrains tarafından geliştirilen, profesyonel bir IDE'dir.
-
Visual Studio Code: Microsoft'un geliştirdiği, hafif ve eklenti desteği güçlü bir editördür.
3. Temel Python Sözdizimi
Python'un temel sözdizimini öğrenmek, programlamaya sağlam bir başlangıç yapmanızı sağlar.
3.1 Değişkenler ve Veri Tipleri
Python'da değişkenler, değerleri saklamak için kullanılır. Veri tipleri ise bu değerlerin türünü belirtir.
3.2 Operatörler
Python'da matematiksel ve mantıksal operatörler kullanılarak işlemler yapılabilir.
-
Aritmetik Operatörler:
+
,-
,*
,/
,%
,**
,//
-
Karşılaştırma Operatörleri:
==
,!=
,>
,<
,>=
,<=
-
Mantıksal Operatörler:
and
,or
,not
3.3 Yorum Satırları
Kodunuzu daha anlaşılır kılmak için yorum satırları ekleyebilirsiniz.
4. Kontrol Yapıları
Programın akışını kontrol etmek için koşullu ifadeler ve döngüler kullanılır.
4.1 Koşullu İfadeler
4.2 Döngüler
-
for Döngüsü:
-
while Döngüsü:
5. Fonksiyonlar
Fonksiyonlar, belirli bir görevi yerine getiren kod bloklarıdır.
Fonksiyonlar, kodunuzu daha modüler ve tekrar kullanılabilir hale getirir.
📦 6. Python Veri Yapıları: Listeler, Demetler, Sözlükler ve Kümeler
Python'da verileri düzenlemek ve yönetmek için çeşitli veri yapıları bulunmaktadır. Bu yapılar, verilerinizi etkili bir şekilde depolamanıza ve işlemenize olanak tanır.
6.1 Listeler (Lists)
Listeler, sıralı ve değiştirilebilir veri koleksiyonlarıdır. Farklı veri tiplerini bir arada tutabilirler.
Görsel: Liste Yapısı
6.2 Demetler (Tuples)
Demetler, sıralı ancak değiştirilemez veri koleksiyonlarıdır. Veri bütünlüğünün korunması gereken durumlarda kullanılır.
Görsel: Demet Yapısı
6.3 Sözlükler (Dictionaries)
Sözlükler, anahtar-değer çiftlerinden oluşan, sırasız ve değiştirilebilir veri koleksiyonlarıdır.
Görsel: Sözlük Yapısı
6.4 Kümeler (Sets)
Kümeler, benzersiz öğelerden oluşan sırasız koleksiyonlardır. Yinelenen değerleri otomatik olarak elerler.
Görsel: Küme Yapısı
🔁 7. Döngüler ve Koşullu İfadeler
Programların akışını kontrol etmek için döngüler ve koşullu ifadeler kullanılır.
7.1 for
Döngüsü
for
döngüsü, belirli bir sayıda tekrarlanacak işlemler için kullanılır.
Görsel: for
Döngüsü Akış Diyagramı
7.2 while
Döngüsü
while
döngüsü, belirli bir koşul sağlandığı sürece işlemleri tekrarlar.
Görsel: while
Döngüsü Akış Diyagramı
7.3 Koşullu İfadeler (if
, elif
, else
)
Koşullu ifadeler, belirli bir koşula göre farklı işlemler yapılmasını sağlar.
Görsel: Koşullu İfadeler Akış Diyagramı
🧠 8. Fonksiyonlar ve Modüler Programlama
Fonksiyonlar, belirli bir görevi yerine getiren kod bloklarıdır. Kodunuzu daha modüler ve okunabilir hale getirirler.
8.1 Fonksiyon Tanımlama
Görsel: Fonksiyon Yapısı
8.2 Parametreler ve Geri Dönüş Değerleri
Görsel: Fonksiyon Parametreleri ve Geri Dönüş
📁 9. Dosya İşlemleri: Okuma ve Yazma
Python'da dosya işlemleri, verileri kalıcı olarak saklamak ve yönetmek için temel bir beceridir. Dosyalarla çalışırken, dosyaları açmak, okumak, yazmak ve kapatmak gibi işlemler gerçekleştirilir.
9.1 Dosya Açma ve Kapatma
Dosyaları açmak için open()
fonksiyonu kullanılır. Dosya işlemleri tamamlandıktan sonra dosyanın kapatılması önemlidir.
Not: Dosya işlemlerinde with
ifadesi kullanmak, dosyanın otomatik olarak kapatılmasını sağlar ve hata yönetimini kolaylaştırır.
9.2 Dosya Okuma Yöntemleri
-
read()
: Dosyanın tamamını okur. -
readline()
: Dosyanın bir satırını okur. -
readlines()
: Dosyanın tüm satırlarını bir liste olarak döndürür.
9.3 Dosyaya Yazma
Dosyaya yazmak için "w"
(yazma) veya "a"
(ekleme) modları kullanılır.
Görsel: Dosya İşlemleri Akış Diyagramı
⚠️ 10. Hata Yönetimi: try, except, else, finally
Programlama sırasında hatalar kaçınılmazdır. Python'da hata yönetimi, programın beklenmedik durumlarla başa çıkabilmesini sağlar.
10.1 Temel try-except Yapısı
10.2 else ve finally Blokları
-
else
: try bloğunda hata oluşmazsa çalışır. -
finally
: Hata oluşsa da oluşmasa da her zaman çalışır.
Görsel: Hata Yönetimi Akış Diyagramı
🧱 11. Nesne Tabanlı Programlama (OOP)
Nesne tabanlı programlama, kodunuzu daha modüler ve yeniden kullanılabilir hale getirir. Python, nesne tabanlı programlamayı destekleyen bir dildir.
11.1 Sınıf ve Nesne Oluşturma
11.2 Kalıtım (Inheritance)
Kalıtım, bir sınıfın başka bir sınıfın özelliklerini ve yöntemlerini miras almasını sağlar.
Görsel: Sınıf ve Kalıtım İlişkisi
📦 12. Modüller ve Paketler: Kodunuzu Organize Etmenin Güçlü Yolu
Python'da modüller ve paketler, kodunuzu daha düzenli ve yönetilebilir hale getirmenizi sağlar. Bu yapıların kullanımı, büyük projelerde kodun okunabilirliğini ve yeniden kullanılabilirliğini artırır.
12.1 Modüller (Modules)
Modül, Python kodlarını içeren bir dosyadır. Bu dosya, fonksiyonlar, sınıflar ve değişkenler içerebilir. Modüller, kodunuzu farklı dosyalara bölerek daha organize bir yapı oluşturmanızı sağlar.
Modül Oluşturma:
Modül Kullanımı:
12.2 Paketler (Packages)
Paket, birden fazla modülü bir araya getiren dizindir. Paketler, ilgili modülleri ve alt paketleri içeren birer klasördür. Python projeleri büyüdükçe, kodu daha düzenli ve anlamlı bir şekilde gruplamak için paketleri kullanmak önemlidir .
Paket Yapısı:
Paket Kullanımı:
Görsel: Modül ve Paket Yapısı
📚 13. Python Standart Kütüphaneleri: Güçlü Araçlar
Python, geniş bir standart kütüphane koleksiyonuna sahiptir. Bu kütüphaneler, dosya işlemleri, veri analizi, web geliştirme ve daha birçok alanda hazır fonksiyonlar sunar.
13.1 Dosya ve İşletim Sistemi İşlemleri
-
os: İşletim sistemiyle etkileşim kurmak için kullanılır.
-
shutil: Dosya ve dizin işlemleri için kullanılır.
13.2 Veri İşleme
-
csv: CSV dosyalarını okuma ve yazma işlemleri için kullanılır.
-
json: JSON verilerini işlemek için kullanılır.
13.3 Zaman ve Tarih İşlemleri
-
datetime: Tarih ve saat işlemleri için kullanılır.
-
time: Zamanla ilgili işlemler için kullanılır.
13.4 Matematiksel İşlemler
-
math: Matematiksel fonksiyonlar içerir.
-
random: Rastgele sayı üretimi için kullanılır.
Görsel: Standart Kütüphane Modülleri
📊 14. Veri Analizi ve Görselleştirme: pandas ve matplotlib
Python, veri analizi ve görselleştirme için güçlü kütüphaneler sunar. Bu kütüphaneler, verileri anlamlandırmak ve etkili sunumlar hazırlamak için vazgeçilmezdir.
14.1 pandas: Veri Manipülasyonu
pandas, veri yapıları ve veri analizi araçları sağlayan bir kütüphanedir. En yaygın kullanılan veri yapıları:
-
Series: Tek boyutlu veri yapısı.
-
DataFrame: İki boyutlu, tablo benzeri veri yapısı.
Örnek: DataFrame Oluşturma
Çıktı:
Görsel: DataFrame Yapısı
14.2 matplotlib: Veri Görselleştirme
matplotlib, verileri görselleştirmek için kullanılan bir kütüphanedir. En yaygın kullanılan modülü pyplot'tur.
Örnek: Basit Grafik Çizimi
Görsel: Basit Çizgi Grafiği
🔍 15. NumPy: Sayısal Hesaplamalar
NumPy, büyük, çok boyutlu diziler ve matrisler üzerinde yüksek performanslı işlemler yapmayı sağlayan bir kütüphanedir.
Örnek: NumPy Dizisi Oluşturma
Çıktı:
Örnek: Matris İşlemleri
Çıktı:
Görsel: NumPy Matris İşlemleri
📈 16. Seaborn: İleri Düzey Görselleştirme
Seaborn, matplotlib üzerine inşa edilmiş, istatistiksel verileri görselleştirmek için kullanılan bir kütüphanedir.
Örnek: Dağılım Grafiği
🌐 17. Python ile Web Geliştirme: Django ve Flask
Python, web geliştirme alanında güçlü ve esnek framework'ler sunar. Bu framework'ler, dinamik ve ölçeklenebilir web uygulamaları oluşturmanıza olanak tanır.
17.1 Django: Kapsamlı Web Geliştirme Framework'ü
Django, hızlı geliştirme ve temiz, pragmatik tasarım için yüksek seviyeli bir Python web framework'üdür. Özellikleri arasında:
-
Otomatik yönetim paneli: Veritabanı modellerine dayalı olarak otomatik olarak oluşturulur.
-
ORM (Object-Relational Mapping): Veritabanı işlemlerini Python sınıflarıyla yönetmenizi sağlar.
-
Güvenlik: CSRF, XSS, SQL enjeksiyonu gibi yaygın güvenlik tehditlerine karşı koruma sağlar.
-
URL yönlendirme: Temiz ve okunabilir URL'ler oluşturmanıza yardımcı olur.
Örnek: Basit Django Projesi Oluşturma
-
Django'yu yükleyin:
-
Yeni bir proje oluşturun:
-
Sunucuyu başlatın:
17.2 Flask: Hafif ve Esnek Web Framework'ü
Flask, minimal ve genişletilebilir bir web framework'üdür. Küçük ve orta ölçekli projeler için idealdir. Özellikleri arasında:
-
Basit yapı: Öğrenmesi ve kullanması kolaydır.
-
Esneklik: İhtiyaçlarınıza göre genişletilebilir.
-
Geniş eklenti desteği: Veritabanı, form doğrulama, yükleme gibi işlemler için birçok eklenti mevcuttur.
Örnek: Basit Flask Uygulaması
Görsel: Django ve Flask Karşılaştırması
🔌 18. API Nedir ve Neden Önemlidir?
API (Application Programming Interface), farklı yazılım uygulamalarının birbirleriyle iletişim kurmasını sağlayan bir arabirimdir. Web geliştirmede, API'ler genellikle veri alışverişi ve hizmet entegrasyonu için kullanılır.
18.1 RESTful API'ler
REST (Representational State Transfer), web servisleri oluşturmak için kullanılan bir mimari tarzdır. RESTful API'ler, HTTP protokolleri üzerinden veri alışverişi yapar ve genellikle JSON formatını kullanır.
HTTP Metotları:
-
GET: Veri alma
-
POST: Yeni veri oluşturma
-
PUT: Mevcut veriyi güncelleme
-
DELETE: Veri silme
Örnek: Basit RESTful API
18.2 FastAPI: Modern ve Hızlı API Geliştirme
FastAPI, modern, hızlı (yüksek performanslı) web API'leri oluşturmak için kullanılan bir Python web framework'üdür. Özellikleri arasında:
-
Yüksek performans: Asenkron programlama desteği sayesinde hızlıdır.
-
Otomatik belge oluşturma: Swagger UI ve ReDoc ile otomatik API belgeleri sunar.
-
Tip güvenliği: Python 3.6+'nın tip ipuçlarını kullanarak hata oranını azaltır.
Örnek: Basit FastAPI Uygulaması
Görsel: RESTful API İletişimi
🔗 19. Python ile API Tüketimi: requests Kütüphanesi
Python'da, harici API'lerle iletişim kurmak için requests kütüphanesi kullanılır. Bu kütüphane, HTTP istekleri göndermenizi ve yanıtları işlemenizi sağlar.
Örnek: GET İsteği Gönderme
Örnek: POST İsteği Gönderme
🗄️ 20. Python ile Veritabanı İşlemleri: Temel Bilgiler
Veritabanları, verileri kalıcı olarak saklamak ve yönetmek için kullanılır. Python, çeşitli veritabanı sistemleriyle etkileşim kurmak için güçlü araçlar sunar.
20.1 SQLite ile Veritabanı İşlemleri
SQLite, hafif ve kurulumu kolay bir veritabanı sistemidir. Python'un standart kütüphanesi içinde yer alan sqlite3
modülü ile kullanılabilir.
Örnek: SQLite Kullanımı
Görsel: SQLite Veritabanı Yapısı
20.2 MySQL ve PostgreSQL ile Veritabanı İşlemleri
Python, MySQL ve PostgreSQL gibi popüler veritabanı sistemleriyle de uyumlu çalışabilir. Bu sistemlerle etkileşim kurmak için ek kütüphaneler kullanılır:
-
MySQL:
mysql-connector-python
veyaPyMySQL
kütüphaneleri kullanılır. -
PostgreSQL:
psycopg2
kütüphanesi kullanılır.
Örnek: MySQL Kullanımı
Görsel: MySQL Veritabanı Yapısı
🧭 21. ORM (Object-Relational Mapping) Nedir?
ORM, veritabanı işlemlerini nesne yönelimli programlama ile entegre eden bir tekniktir. ORM kullanarak, SQL sorguları yazmadan veritabanı işlemleri gerçekleştirebilirsiniz.
21.1 SQLAlchemy ile ORM Kullanımı
SQLAlchemy, Python için güçlü bir ORM kütüphanesidir. Veritabanı işlemlerini nesneler aracılığıyla yönetmenizi sağlar.
Örnek: SQLAlchemy Kullanımı
Görsel: SQLAlchemy ORM Yapısı
21.2 Django ORM ile Veritabanı İşlemleri
Django, kendi ORM sistemine sahip bir web framework'üdür. Veritabanı işlemlerini Python sınıfları aracılığıyla yönetmenizi sağlar.
Örnek: Django ORM Kullanımı
🧪 22. Python'da Test Yazımı: Kod Kalitesini Artırmak
Test yazımı, yazılım geliştirme sürecinin vazgeçilmez bir parçasıdır. Python, test yazımı için çeşitli kütüphaneler ve araçlar sunar.
22.1 unittest Kütüphanesi
Python'un standart kütüphanesi olan unittest
, test yazımı için temel bir araçtır.
Örnek: unittest Kullanımı
22.2 pytest Kütüphanesi
pytest
, daha gelişmiş test senaryoları için kullanılan popüler bir kütüphanedir. Daha az kodla daha fazla test yazmanıza olanak tanır.
Örnek: pytest Kullanımı
22.3 doctest Kütüphanesi
doctest
, fonksiyonların docstring'lerinde yazılan örnekleri test eder.
Örnek: doctest Kullanımı
🐞 23. Python'da Hata Ayıklama: Debugging Teknikleri
Hata ayıklama, kodunuzdaki hataları bulmak ve düzeltmek için kullanılan yöntemler bütünüdür.
23.1 print() Fonksiyonu ile Hata Ayıklama
En basit hata ayıklama yöntemi, print()
fonksiyonu ile değişkenlerin değerlerini yazdırmaktır.
Örnek:
23.2 pdb Modülü ile Hata Ayıklama
Python'un yerleşik hata ayıklayıcısı olan pdb
, kodunuzu adım adım incelemenizi sağlar.
Örnek:
23.3 IDE'ler ile Hata Ayıklama
Birçok IDE (örneğin, PyCharm, VSCode), entegre hata ayıklama araçları sunar. Bu araçlar, breakpoint'ler, adım adım yürütme ve değişken izleme gibi özellikler içerir.
⚠️ 24. Python'da Hata Türleri ve Yönetimi
Python'da karşılaşabileceğiniz hata türleri ve bu hataların nasıl yönetileceği:
24.1 Hata Türleri
-
SyntaxError: Yazım hataları.
-
NameError: Tanımlanmamış bir değişken kullanımı.
-
TypeError: Yanlış veri tipi kullanımı.
-
IndexError: Liste veya dizinin geçersiz bir indeksine erişim.
24.2 Hata Yönetimi
Python'da hataları yönetmek için try
, except
, else
ve finally
blokları kullanılır.
Örnek:
🗂️ 25. Python'da Dosya İşlemleri: Veri Okuma ve Yazma
Dosya işlemleri, programların harici veri kaynaklarıyla etkileşim kurmasını sağlar. Python, dosya işlemleri için güçlü ve esnek yöntemler sunar.
25.1 Dosya Açma ve Kapatma
Python'da bir dosyayı açmak için open()
fonksiyonu kullanılır. İşlem tamamlandıktan sonra dosyanın kapatılması önemlidir.
Örnek: Dosya Açma ve Kapatma
Not: Dosya işlemlerinde with
ifadesi kullanmak, dosyanın otomatik olarak kapanmasını sağlar ve hata yönetimini kolaylaştırır.
Örnek: with İfadesi ile Dosya Açma
25.2 Dosyaya Yazma
Dosyaya veri yazmak için write()
fonksiyonu kullanılır. Yazma modları şunlardır:
-
'w'
: Yazma modu. Dosya mevcutsa içeriği silinir, yoksa yeni dosya oluşturulur. -
'a'
: Ekleme modu. Dosya mevcutsa sonuna ekleme yapar, yoksa yeni dosya oluşturulur.
Örnek: Dosyaya Yazma
25.3 Dosyadan Okuma
Dosyadan veri okumak için read()
, readline()
veya readlines()
fonksiyonları kullanılır.
-
read()
: Tüm dosyayı okur. -
readline()
: Dosyanın bir satırını okur. -
readlines()
: Dosyanın tüm satırlarını bir liste olarak döner.
Örnek: Dosyadan Okuma
Görsel: Python Dosya İşlemleri Akışı
📊 26. Python ile Veri Analizi: Temel Araçlar ve Kütüphaneler
Veri analizi, verilerden anlamlı bilgiler çıkarma sürecidir. Python, veri analizi için zengin kütüphaneler ve araçlar sunar.
26.1 NumPy: Sayısal Hesaplamalar
NumPy, çok boyutlu diziler ve matrisler üzerinde yüksek performanslı işlemler yapmayı sağlayan bir kütüphanedir.
Örnek: NumPy Kullanımı
26.2 Pandas: Veri Manipülasyonu
Pandas, veri yapıları ve veri analizi araçları sunan güçlü bir kütüphanedir. DataFrame
ve Series
gibi veri yapılarıyla çalışır.
Örnek: Pandas ile DataFrame Oluşturma
26.3 Matplotlib ve Seaborn: Veri Görselleştirme
Matplotlib ve Seaborn, verileri görselleştirmek için kullanılan popüler kütüphanelerdir.
Örnek: Matplotlib ile Çizgi Grafiği
Görsel: Matplotlib ile Çizgi Grafiği Örneği
26.4 scikit-learn: Makine Öğrenmesi
scikit-learn, makine öğrenmesi algoritmaları ve araçları sunan geniş kapsamlı bir kütüphanedir.
Örnek: scikit-learn ile Lineer Regresyon
🌐 27. Python ile Web Geliştirme: Flask ve Django Framework'leri
Python, web geliştirme alanında güçlü ve esnek çözümler sunan bir programlama dilidir. Bu alanda en çok tercih edilen iki framework, Flask ve Django'dur. Her ikisi de farklı ihtiyaçlara hitap eder ve projelerin gereksinimlerine göre seçim yapılmalıdır.
27.1 Flask: Hafif ve Esnek Bir Mikro Framework
Flask, minimal yapısı ve esnekliği ile bilinen bir mikro web framework'tür. Küçük ve orta ölçekli projeler için idealdir ve geliştiricilere büyük bir özgürlük sunar.
Öne Çıkan Özellikleri:
-
Hafif ve Genişletilebilir: Flask, temel işlevselliği sağlar ve geliştiricilerin ihtiyaçlarına göre genişletilebilir.
-
Esnek Yapı: Geliştiricilere uygulama mimarisi, kitaplıklar ve uzantılar üzerinde tam kontrol sağlar.
-
Kolay Öğrenme Eğrisi: Basit API'si sayesinde hızlı bir şekilde öğrenilebilir ve uygulanabilir.
-
RESTful İstek Desteği: HTTP ve RESTful isteklerini destekler, bu da API geliştirmeyi kolaylaştırır.
Kullanım Alanları:
-
Küçük ve orta ölçekli web uygulamaları
-
Mikro servis mimarileri
-
Hızlı prototipleme ve MVP geliştirme
Görsel: Flask Framework Logosu
27.2 Django: Kapsamlı ve Güçlü Bir Framework
Django, "batteries-included" yaklaşımıyla gelen, tam özellikli bir web framework'tür. Büyük ve karmaşık projeler için uygundur ve birçok yerleşik özellik sunar.
Öne Çıkan Özellikleri:
-
Yerleşik ORM: Veritabanı işlemleri için güçlü bir nesne-ilişkisel eşleme sistemi sunar.
-
Yönetici Paneli: Otomatik olarak oluşturulan bir yönetici arayüzü ile içerik yönetimini kolaylaştırır.
-
Güvenlik: CSRF, XSS ve SQL enjeksiyonu gibi yaygın güvenlik tehditlerine karşı koruma sağlar.
-
URL Yönlendirme ve Şablonlama: Kolay ve etkili URL şemaları ile güçlü bir şablon motoru sunar.
Kullanım Alanları:
-
Büyük ölçekli web uygulamaları
-
İçerik yönetim sistemleri (CMS)
-
E-ticaret platformları
-
Sosyal medya siteleri
Görsel: Django Framework Logosu
27.3 Flask ve Django Karşılaştırması
Özellik | Flask | Django |
---|---|---|
Yapı | Mikro framework | Tam özellikli framework |
Esneklik | Yüksek | Orta |
Öğrenme Eğrisi | Kolay | Orta |
Yerleşik Özellikler | Az (gerektiğinde eklenir) | Çok (çoğu hazır gelir) |
Kullanım Alanı | Küçük ve orta ölçekli projeler | Orta ve büyük ölçekli projeler |
Topluluk Desteği | Geniş | Çok geniş |
🔗 28. Python ile API Geliştirme ve RESTful Servisler
API (Application Programming Interface), farklı yazılım bileşenlerinin birbirleriyle iletişim kurmasını sağlayan bir arayüzdür. RESTful API'ler, HTTP protokolü üzerinden çalışan ve kaynaklara erişim sağlayan yaygın bir API türüdür.
28.1 RESTful API Nedir?
REST (Representational State Transfer), web servisleri için kullanılan bir mimari tarzdır. RESTful API'ler, HTTP yöntemlerini kullanarak kaynaklara erişim sağlar.
Temel HTTP Yöntemleri:
-
GET: Veri okuma
-
POST: Yeni veri oluşturma
-
PUT: Mevcut veriyi güncelleme
-
DELETE: Veri silme
REST Prensipleri:
-
Stateless: Her istek bağımsızdır, sunucu istemci durumunu saklamaz.
-
Cacheable: Yanıtlar önbelleğe alınabilir.
-
Client-Server: İstemci ve sunucu ayrıdır.
-
Uniform Interface: Standart bir arayüz kullanılır.
28.2 Flask ile Basit Bir RESTful API Oluşturma
Flask, hafif ve esnek bir web framework'tür. RESTful API geliştirmek için idealdir.
Adımlar:
-
Kurulum:
-
Uygulama Oluşturma:
Bu örnek, /veri
endpoint'ine GET ve POST istekleriyle veri okuma ve ekleme işlemlerini gerçekleştirir.
28.3 Django REST Framework ile Gelişmiş API'ler
Django REST Framework (DRF), Django üzerinde RESTful API'ler geliştirmek için kullanılan güçlü bir kütüphanedir.
Kurulum:
Kullanım:
DRF, model tanımlamaları, serializer'lar ve viewset'ler kullanarak hızlı ve güvenli API'ler oluşturmanıza olanak tanır.
🗃️ 29. Python'da Veritabanı İşlemleri ve ORM Kullanımı
Veritabanı işlemleri, yazılım geliştirme sürecinin önemli bir parçasıdır. Python, veritabanı işlemleri için çeşitli yöntemler ve araçlar sunar. Bu bölümde, doğrudan SQL sorguları kullanarak veritabanı işlemleri yapmayı ve ORM kullanarak bu işlemleri daha soyut bir şekilde gerçekleştirmeyi öğreneceğiz.
29.1 Doğrudan SQL Sorguları ile Veritabanı İşlemleri
Python, yerleşik sqlite3
modülü sayesinde SQLite veritabanlarıyla doğrudan çalışabilir. Ayrıca, MySQL, PostgreSQL gibi diğer veritabanları için de uygun kütüphaneler mevcuttur.
Örnek: SQLite ile Temel Veritabanı İşlemleri
Bu yöntem, küçük projeler için yeterli olabilir. Ancak, büyük ve karmaşık projelerde ORM kullanımı daha verimli ve sürdürülebilir bir çözüm sunar.
29.2 ORM Nedir?
ORM (Object-Relational Mapping), veritabanı tablolarını nesne yönelimli programlama dillerinde sınıflar olarak temsil etmeyi sağlayan bir tekniktir. ORM kullanarak, SQL sorguları yazmadan veritabanı işlemleri gerçekleştirebiliriz.
Python'da popüler ORM kütüphaneleri arasında SQLAlchemy ve Django ORM bulunmaktadır.
🛠️ 30. SQLAlchemy ile ORM Kullanımı
SQLAlchemy, Python için güçlü ve esnek bir ORM kütüphanesidir. Veritabanı işlemlerini daha kolay ve verimli hale getirerek, geliştiricilerin veritabanı etkileşimlerini doğrudan SQL yazmak yerine Python nesneleri üzerinden yönetmelerini sağlar .
30.1 Kurulum
SQLAlchemy'yi pip kullanarak kolayca kurabilirsiniz:
30.2 Temel Kullanım
Örnek: SQLAlchemy ile Veritabanı İşlemleri
Bu örnek, SQLAlchemy kullanarak veritabanı işlemlerini nasıl gerçekleştireceğinizi göstermektedir.
🧰 31. Django ORM ile Veritabanı İşlemleri
Django, Python tabanlı bir web çatısıdır ve kendi içinde güçlü bir ORM sistemine sahiptir. Django ORM, veritabanı işlemlerini Python sınıfları üzerinden yapma imkanı sunar .
31.1 Django Projesi Oluşturma
Öncelikle, Django'yu kurmanız gerekmektedir:
Ardından, bir Django projesi ve uygulaması oluşturun:
31.2 Model Tanımlama
ornekuygulama/models.py
dosyasında modelinizi tanımlayın:
31.3 Veritabanı İşlemleri
Veritabanı tablolarını oluşturmak için aşağıdaki komutları kullanın:
Veri eklemek ve sorgulamak için Django'nun ORM API'sini kullanabilirsiniz:
Django ORM, veritabanı işlemlerini daha anlaşılır ve daha az karmaşık hale getirir. SQL sorgularıyla uğraşmak yerine, sadece Python nesneleri ile etkileşime geçebilirsiniz .
🧪 32. Python'da Test Yazımı ve Hata Ayıklama
Yazılım geliştirme sürecinde, kodun doğruluğunu ve güvenilirliğini sağlamak için test yazımı ve hata ayıklama (debugging) kritik öneme sahiptir. Python, bu süreçleri desteklemek için çeşitli araçlar ve teknikler sunar.
32.1 Test Yazımının Önemi
Testler, kodun beklenen şekilde çalıştığını doğrulamak için kullanılır. İyi yazılmış testler, kod değişikliklerinin mevcut işlevselliği bozmadığından emin olmanıza yardımcı olur.
32.2 Python'da Test Yazma Araçları
Python, test yazımı için birkaç yerleşik ve üçüncü taraf kütüphane sunar:
-
unittest: Python'un standart kütüphanesinde bulunan bir test çerçevesidir.
-
pytest: Daha gelişmiş özellikler ve daha okunabilir testler için popüler bir üçüncü taraf kütüphanedir.
-
doctest: Dokümantasyon içinde yazılmış örnek kodları test eder.
unittest Kullanımı
pytest Kullanımı
32.3 Hata Ayıklama (Debugging) Teknikleri
Hata ayıklama, kodunuzdaki hataları bulma ve düzeltme sürecidir. Python, bu süreçte yardımcı olacak çeşitli araçlar sunar:
-
print() Fonksiyonu: Değişkenlerin değerlerini ve kodun akışını izlemek için kullanılır.
-
pdb Modülü: Python'un yerleşik hata ayıklayıcısıdır. Kodunuzu adım adım çalıştırarak hataları bulmanıza yardımcı olur.
-
IDE'ler: PyCharm, VS Code gibi entegre geliştirme ortamları, gelişmiş hata ayıklama araçları sunar.
pdb Kullanımı
Bu kod çalıştırıldığında, pdb.set_trace()
satırında program durur ve etkileşimli bir hata ayıklama oturumu başlatılır.
32.4 Hata Türleri ve Yönetimi
Python'da karşılaşabileceğiniz başlıca hata türleri:
-
SyntaxError: Yazım hataları.
-
TypeError: Yanlış veri tipi kullanımı.
-
NameError: Tanımlanmamış değişken kullanımı.
-
IndexError: Liste veya dizilerde geçersiz indeks kullanımı.
Hataları yönetmek için try-except
blokları kullanılır:
32.5 Logging ile Hata Takibi
logging
modülü, uygulamanızın çalışması sırasında oluşan olayları kaydetmenize olanak tanır. Bu, özellikle üretim ortamlarında hata ayıklama için faydalıdır.
🧵 33. Python'da Çoklu İş Parçacığı (Multithreading) ve Çoklu İşlem (Multiprocessing)
Modern bilgisayarlar, birden fazla işlemci çekirdeği sayesinde aynı anda birden fazla işlemi gerçekleştirebilir. Python'da, bu paralel işlemleri gerçekleştirmek için çoklu iş parçacığı (multithreading) ve çoklu işlem (multiprocessing) olmak üzere iki ana yöntem bulunmaktadır. Bu bölümde, her iki yöntemin de ne olduğunu, nasıl kullanıldığını ve hangi durumlarda tercih edilmesi gerektiğini inceleyeceğiz.
33.1 Çoklu İş Parçacığı (Multithreading) Nedir?
İş parçacığı (thread), bir işlem (process) içerisinde çalışan en küçük yürütme birimidir. Çoklu iş parçacığı (multithreading), bir işlem içinde birden fazla iş parçacığının aynı anda çalıştırılmasıdır. Bu, özellikle I/O (girdi/çıktı) işlemleri gibi bekleme süresi yüksek olan görevlerde programın daha verimli çalışmasını sağlar.
Python'da threading Modülü:
Python'da, threading
modülü kullanılarak çoklu iş parçacığı oluşturulabilir. Aşağıda basit bir örnek bulunmaktadır:
Bu örnekte, iki iş parçacığı oluşturulup başlatılmakta ve ana iş parçacığı, bu iş parçacıklarının tamamlanmasını beklemektedir.
Global Interpreter Lock (GIL) ve Multithreading:
Python'un Global Interpreter Lock (GIL) adı verilen bir mekanizması vardır. GIL, aynı anda sadece bir iş parçacığının Python bayt kodunu çalıştırmasına izin verir. Bu nedenle, Python'da çoklu iş parçacığı kullanımı, CPU yoğunluklu işlemlerde beklenen performans artışını sağlamayabilir. Ancak, I/O yoğunluklu işlemlerde (örneğin, dosya okuma/yazma, ağ işlemleri) çoklu iş parçacığı kullanımı performansı artırabilir.
33.2 Çoklu İşlem (Multiprocessing) Nedir?
Çoklu işlem (multiprocessing), her biri kendi bellek alanına sahip ayrı işlemcilerin (process) oluşturulmasıdır. Bu yöntem, özellikle CPU yoğunluklu işlemlerde etkilidir çünkü her işlem kendi GIL'ine sahip olur ve böylece Python'un GIL sınırlamalarını aşarak gerçek paralel işlem yapabilir.
Python'da multiprocessing Modülü:
Python'da, multiprocessing
modülü kullanılarak çoklu işlem oluşturulabilir. Aşağıda basit bir örnek bulunmaktadır:
Bu örnekte, iki ayrı işlem oluşturulup başlatılmakta ve ana işlem, bu işlemlerin tamamlanmasını beklemektedir.
Multiprocessing Kullanımının Avantajları:
-
Gerçek Paralellik: Her işlem kendi bellek alanına ve GIL'ine sahip olduğundan, CPU yoğunluklu işlemlerde gerçek paralellik sağlanır.
-
Stabilite: İşlemler birbirinden bağımsız çalıştığı için, bir işlemde oluşan hata diğerlerini etkilemez.
33.3 Multithreading ve Multiprocessing Arasındaki Farklar
Özellik | Multithreading | Multiprocessing |
---|---|---|
Bellek Paylaşımı | Tüm iş parçacıkları aynı bellek alanını paylaşır. | Her işlem kendi bellek alanına sahiptir. |
GIL Etkisi | GIL nedeniyle aynı anda sadece bir iş parçacığı Python kodu çalıştırabilir. | Her işlem kendi GIL'ine sahip olduğundan gerçek paralellik mümkündür. |
Kullanım Alanı | I/O yoğunluklu işlemler için uygundur. | CPU yoğunluklu işlemler için uygundur. |
İşlem Ağırlığı | İş parçacıkları hafiftir ve oluşturulması daha az kaynak gerektirir. | İşlemler daha ağırdır ve oluşturulması daha fazla kaynak gerektirir. |
33.4 Hangi Durumda Hangi Yöntem Tercih Edilmeli?
-
I/O Yoğunluklu İşlemler: Dosya okuma/yazma, ağ işlemleri gibi I/O beklemeleri içeren görevlerde multithreading tercih edilmelidir. Bu sayede, bir iş parçacığı I/O işlemi beklerken diğerleri çalışmaya devam edebilir.
-
CPU Yoğunluklu İşlemler: Matematiksel hesaplamalar, veri işleme gibi CPU'yu yoğun kullanan görevlerde multiprocessing tercih edilmelidir. Bu sayede, işlemler farklı çekirdeklerde paralel olarak çalışabilir ve performans artışı sağlanır.
33.5 Örnek: I/O Yoğunluklu İşlemde Multithreading Kullanımı
Aşağıdaki örnekte, birden fazla URL'den veri çekmek için çoklu iş parçacığı kullanımı gösterilmektedir:
🧵 33. Python'da Çoklu İş Parçacığı (Multithreading) ve Çoklu İşlem (Multiprocessing)
Modern bilgisayarlar, birden fazla işlemci çekirdeği sayesinde aynı anda birden fazla işlemi gerçekleştirebilir. Python'da, bu paralel işlemleri gerçekleştirmek için çoklu iş parçacığı (multithreading) ve çoklu işlem (multiprocessing) olmak üzere iki ana yöntem bulunmaktadır. Bu bölümde, her iki yöntemin de ne olduğunu, nasıl kullanıldığını ve hangi durumlarda tercih edilmesi gerektiğini inceleyeceğiz.
33.1 Çoklu İş Parçacığı (Multithreading) Nedir?
İş parçacığı (thread), bir işlem (process) içerisinde çalışan en küçük yürütme birimidir. Çoklu iş parçacığı (multithreading), bir işlem içinde birden fazla iş parçacığının aynı anda çalıştırılmasıdır. Bu, özellikle I/O (girdi/çıktı) işlemleri gibi bekleme süresi yüksek olan görevlerde programın daha verimli çalışmasını sağlar.
Python'da threading Modülü:
Python'da, threading
modülü kullanılarak çoklu iş parçacığı oluşturulabilir. Aşağıda basit bir örnek bulunmaktadır:
Bu örnekte, iki iş parçacığı oluşturulup başlatılmakta ve ana iş parçacığı, bu iş parçacıklarının tamamlanmasını beklemektedir.
Global Interpreter Lock (GIL) ve Multithreading:
Python'un Global Interpreter Lock (GIL) adı verilen bir mekanizması vardır. GIL, aynı anda sadece bir iş parçacığının Python bayt kodunu çalıştırmasına izin verir. Bu nedenle, Python'da çoklu iş parçacığı kullanımı, CPU yoğunluklu işlemlerde beklenen performans artışını sağlamayabilir. Ancak, I/O yoğunluklu işlemlerde (örneğin, dosya okuma/yazma, ağ işlemleri) çoklu iş parçacığı kullanımı performansı artırabilir.
33.2 Çoklu İşlem (Multiprocessing) Nedir?
Çoklu işlem (multiprocessing), her biri kendi bellek alanına sahip ayrı işlemcilerin (process) oluşturulmasıdır. Bu yöntem, özellikle CPU yoğunluklu işlemlerde etkilidir çünkü her işlem kendi GIL'ine sahip olur ve böylece Python'un GIL sınırlamalarını aşarak gerçek paralel işlem yapabilir.
Python'da multiprocessing Modülü:
Python'da, multiprocessing
modülü kullanılarak çoklu işlem oluşturulabilir. Aşağıda basit bir örnek bulunmaktadır:
Bu örnekte, iki ayrı işlem oluşturulup başlatılmakta ve ana işlem, bu işlemlerin tamamlanmasını beklemektedir.
Multiprocessing Kullanımının Avantajları:
-
Gerçek Paralellik: Her işlem kendi bellek alanına ve GIL'ine sahip olduğundan, CPU yoğunluklu işlemlerde gerçek paralellik sağlanır.
-
Stabilite: İşlemler birbirinden bağımsız çalıştığı için, bir işlemde oluşan hata diğerlerini etkilemez.
33.3 Multithreading ve Multiprocessing Arasındaki Farklar
Özellik | Multithreading | Multiprocessing |
---|---|---|
Bellek Paylaşımı | Tüm iş parçacıkları aynı bellek alanını paylaşır. | Her işlem kendi bellek alanına sahiptir. |
GIL Etkisi | GIL nedeniyle aynı anda sadece bir iş parçacığı Python kodu çalıştırabilir. | Her işlem kendi GIL'ine sahip olduğundan gerçek paralellik mümkündür. |
Kullanım Alanı | I/O yoğunluklu işlemler için uygundur. | CPU yoğunluklu işlemler için uygundur. |
İşlem Ağırlığı | İş parçacıkları hafiftir ve oluşturulması daha az kaynak gerektirir. | İşlemler daha ağırdır ve oluşturulması daha fazla kaynak gerektirir. |
33.4 Hangi Durumda Hangi Yöntem Tercih Edilmeli?
-
I/O Yoğunluklu İşlemler: Dosya okuma/yazma, ağ işlemleri gibi I/O beklemeleri içeren görevlerde multithreading tercih edilmelidir. Bu sayede, bir iş parçacığı I/O işlemi beklerken diğerleri çalışmaya devam edebilir.
-
CPU Yoğunluklu İşlemler: Matematiksel hesaplamalar, veri işleme gibi CPU'yu yoğun kullanan görevlerde multiprocessing tercih edilmelidir. Bu sayede, işlemler farklı çekirdeklerde paralel olarak çalışabilir ve performans artışı sağlanır.
33.5 Örnek: I/O Yoğunluklu İşlemde Multithreading Kullanımı
Aşağıdaki örnekte, birden fazla URL'den veri çekmek için çoklu iş parçacığı kullanımı gösterilmektedir:
33.5 Örnek: I/O Yoğunluklu İşlemde Multithreading Kullanımı
Aşağıdaki örnekte, birden fazla URL'den veri çekmek için çoklu iş parçacığı kullanımı gösterilmektedir:
Bu kodda, her bir URL için ayrı bir iş parçacığı oluşturulmakta ve bu iş parçacıkları aynı anda çalıştırılmaktadır. Bu sayede, ağ istekleri paralel olarak gerçekleştirilir ve toplam işlem süresi azalır.
33.6 Örnek: CPU Yoğunluklu İşlemde Multiprocessing Kullanımı
Aşağıdaki örnekte, büyük bir sayı listesinde kare alma işlemi için çoklu işlem kullanımı gösterilmektedir:
Bu kodda, multiprocessing.Pool
kullanılarak işlem havuzu oluşturulmakta ve map
fonksiyonu ile her bir sayı için kare_al
fonksiyonu paralel olarak çalıştırılmaktadır. Bu sayede, CPU yoğunluklu bu işlem tüm çekirdekler üzerinde dağıtılarak daha hızlı tamamlanır.
33.7 Sonuç
Python'da multithreading ve multiprocessing kavramları, programların performansını artırmak için önemli araçlardır. Hangi yöntemin kullanılacağı, işlemin türüne bağlıdır:
-
I/O Yoğunluklu İşlemler: Ağ istekleri, dosya okuma/yazma gibi işlemler için multithreading uygundur.
-
CPU Yoğunluklu İşlemler: Yoğun hesaplama gerektiren işlemler için multiprocessing tercih edilmelidir.
Her iki yöntemin de avantajları ve dezavantajları bulunmaktadır. Bu nedenle, uygulamanızın ihtiyaçlarına ve işlem türüne göre en uygun yöntemi seçmek önemlidir.
⚙️ 34. Python'da Asenkron Programlama ve asyncio
Modülü
34.1 Asenkron Programlama Nedir?
Asenkron programlama, programın belirli işlemleri beklerken diğer işlemleri engellemeden çalışmasına olanak tanır. Bu, özellikle ağ istekleri, dosya işlemleri gibi I/O yoğunluklu görevlerde önemlidir. Python'da bu yaklaşımı gerçekleştirmek için asyncio
modülü kullanılır.
34.2 asyncio
Modülüne Giriş
Python'un asyncio
modülü, asenkron programlama için temel bir araçtır. Bu modül, tek bir iş parçacığı ve işlem kullanarak eşzamanlı görevlerin yürütülmesini sağlar. asyncio
, özellikle yüksek performanslı ağ ve web sunucuları, veritabanı bağlantı kütüphaneleri ve dağıtık görev kuyrukları gibi asenkron çerçevelerin temelini oluşturur .
34.3 async
ve await
Anahtar Kelimeleri
-
async
anahtar kelimesi, bir fonksiyonun asenkron olarak tanımlanmasını sağlar. Bu fonksiyonlar, diğer asenkron fonksiyonları çağırabilir veawait
ifadesiyle bekleyebilir. -
await
anahtar kelimesi, bir asenkron fonksiyonun sonucunu beklemek için kullanılır. Bu, programın diğer görevleri engellemeden belirli bir işlemi tamamlamasını sağlar.
34.4 Basit Bir asyncio
Örneği
Aşağıdaki örnek, asyncio
modülünü kullanarak asenkron bir fonksiyonun nasıl tanımlanacağını ve çalıştırılacağını göstermektedir:
Bu kod, "Merhaba" yazısını yazdırır, 1 saniye bekler ve ardından "Dünya" yazısını yazdırır.
34.5 Asenkron Görevlerin Eşzamanlı Yürütülmesi
asyncio.gather()
fonksiyonu, birden fazla asenkron görevi eşzamanlı olarak çalıştırmak için kullanılır. Aşağıdaki örnek, iki farklı görevin aynı anda nasıl yürütülebileceğini göstermektedir:
Bu kod, gorev1
ve gorev2
fonksiyonlarını eşzamanlı olarak çalıştırır ve her biri tamamlandığında ilgili mesajı yazdırır.
34.6 Gerçek Dünya Uygulaması: Web Sayfalarını Asenkron Olarak İndirme
Asenkron programlama, web sayfalarını eşzamanlı olarak indirmek gibi görevlerde oldukça etkilidir. Aşağıdaki örnek, aiohttp
kütüphanesini kullanarak birden fazla web sayfasını asenkron olarak indirmeyi göstermektedir:
Bu kod, belirtilen URL'leri asenkron olarak indirir ve her birinin durum kodunu yazdırır.
34.7 asyncio
ile Görevlerin Zamanlanması
asyncio.create_task()
fonksiyonu, bir asenkron görevi zamanlamak için kullanılır. Bu, görevlerin başlatılmasını ve yönetilmesini sağlar. Aşağıdaki örnek, iki görevin nasıl zamanlanacağını göstermektedir:
Bu kod, gorev1
ve gorev2
fonksiyonlarını zamanlar ve her biri tamamlandığında ilgili mesajı yazdırır.
34.8 asyncio
ile CPU Yoğunluklu İşlemler
asyncio
, I/O yoğunluklu işlemler için idealdir, ancak CPU yoğunluklu işlemler için uygun değildir. CPU yoğunluklu işlemler için concurrent.futures
modülünü kullanarak işlemleri ayrı iş parçacıklarında veya işlemlerde çalıştırmak daha uygundur.
🚀 34. Python'da Asenkron Programlamanın İleri Düzey Konuları
34.1 Görevlerin Zaman Aşımı ile Sınırlandırılması
Asenkron görevlerin belirli bir süre içinde tamamlanmasını sağlamak için asyncio.wait_for()
fonksiyonu kullanılır. Bu, özellikle ağ istekleri gibi zaman alabilecek işlemlerde önemlidir.
Bu örnekte, uzun_sureli_gorev
fonksiyonu 5 saniye sürerken, wait_for
ile 3 saniyelik bir zaman aşımı belirlenmiştir. Görev bu süre içinde tamamlanmazsa, TimeoutError
istisnası yakalanır.
34.2 Görevlerin İptal Edilmesi
Asenkron görevler, belirli koşullar altında iptal edilebilir. Bu, özellikle kullanıcı müdahalesi veya belirli bir durumun gerçekleşmesi durumunda önemlidir.
Bu kodda, iptal_edilebilir_gorev
fonksiyonu sürekli çalışırken, ana görev 3 saniye sonra bu görevi iptal eder.
34.3 Görev Grupları ile Yönetim
Python 3.11 ve sonrasında tanıtılan asyncio.TaskGroup
, birden fazla görevi birlikte yönetmek için kullanılır. Bu, görevlerin birlikte başlatılması ve hata yönetiminin merkezi olarak yapılmasını sağlar.
Bu örnekte, üç görev aynı anda başlatılır ve her biri kendi süresine göre tamamlandığında mesaj yazdırılır.
34.4 Asenkron Kuyruklar ile Görev Sıralaması
asyncio.Queue
, görevlerin belirli bir sırayla işlenmesini sağlar. Bu, özellikle üretici-tüketici modellerinde kullanılır.
Bu kodda, üretici görev kuyruğa veri eklerken, tüketici görev bu verileri alır ve işler.
34.5 Asenkron Kodlarda Hata Yönetimi
Asenkron fonksiyonlarda hata yönetimi, try-except
blokları ile yapılır. Bu, beklenmeyen durumların kontrol altına alınmasını sağlar.
Bu örnekte, hata_veren_gorev
fonksiyonu bir hata fırlatır ve ana görev bu hatayı yakalar.
📁 34.9 Asenkron Dosya İşlemleri
Python'un asyncio
kütüphanesi, asenkron programlama için güçlü bir temel sağlar. Ancak, yerleşik open()
fonksiyonu ve dosya işlemleri senkron çalıştığından, bu işlemler asyncio
ile doğrudan asenkron hale getirilemez. Bu durumda, üçüncü taraf kütüphaneler devreye girer.
🔧 aiofiles
Kütüphanesi ile Asenkron Dosya İşlemleri
aiofiles
, dosya işlemlerini asenkron olarak gerçekleştirmek için kullanılan popüler bir üçüncü taraf kütüphanedir. Bu kütüphane, dosya okuma ve yazma işlemlerini async
/await
sözdizimiyle uyumlu hale getirir.
Kurulum
Kullanım Örneği
Bu örnekte, aiofiles.open()
fonksiyonu ile dosya işlemleri asenkron olarak gerçekleştirilir. Bu sayede, dosya işlemleri sırasında diğer görevlerin çalışmasına engel olunmaz.
Not:
aiofiles
, dosya işlemlerini arka planda ayrı bir iş parçacığında gerçekleştirerek asenkron hale getirir. Bu,asyncio
ile uyumlu bir şekilde çalışmasını sağlar.
🗄️ 34.10 Asenkron Veritabanı Bağlantıları
Asenkron programlama, veritabanı işlemlerinde de büyük avantajlar sağlar. Ancak, standart veritabanı kütüphaneleri genellikle senkron çalışır. Bu nedenle, asenkron veritabanı işlemleri için özel kütüphaneler kullanılır.
🐘 PostgreSQL için asyncpg
asyncpg
, PostgreSQL veritabanı ile asenkron bağlantı kurmak için kullanılan yüksek performanslı bir kütüphanedir.
Kurulum
Kullanım Örneği
Bu örnekte, asyncpg.connect()
fonksiyonu ile veritabanına asenkron olarak bağlanılır ve fetchval()
ile bir sorgu çalıştırılır.
🐍 SQLAlchemy ile Asenkron Veritabanı İşlemleri
SQLAlchemy, Python'da popüler bir ORM (Object-Relational Mapping) kütüphanesidir. SQLAlchemy 1.4 ve sonrasında, asenkron veritabanı işlemleri için destek eklenmiştir.
Kurulum
Kullanım Örneği
Bu yapı, SQLAlchemy'nin ORM özelliklerini asenkron programlama ile birleştirmenizi sağlar.
🔄 34.11 asyncio
ile Dosya ve Veritabanı İşlemlerinin Birlikte Kullanımı
Asenkron dosya ve veritabanı işlemlerini bir arada kullanarak, yüksek performanslı ve verimli uygulamalar geliştirebilirsiniz. Örneğin, bir dosyadan okunan verileri veritabanına asenkron olarak kaydetmek mümkündür.
Bu örnekte, aiofiles
ile dosyadan satır satır okunan veriler, asyncpg
kullanılarak veritabanına asenkron olarak eklenir.
✅ 34.12 Sonuç
Asenkron programlama, dosya ve veritabanı işlemlerinde büyük avantajlar sağlar. aiofiles
, asyncpg
ve SQLAlchemy gibi kütüphaneler, bu işlemleri asenkron hale getirerek uygulamalarınızın performansını artırmanıza yardımcı olur. Bu araçları kullanarak, daha verimli ve ölçeklenebilir Python uygulamaları geliştirebilirsiniz.
⏰ 34.13 Zamanlayıcılar: Asenkron Zaman Tabanlı İşlemler
asyncio
modülü, zaman tabanlı işlemleri asenkron olarak gerçekleştirmek için çeşitli yöntemler sunar.
asyncio.sleep()
: Belirli Bir Süre Beklemek
Bu örnekte, await asyncio.sleep(2)
ifadesi, 2 saniyelik bir bekleme süresi oluşturur. Bu süre zarfında diğer asenkron görevler çalışmaya devam edebilir.
asyncio.call_later()
: Belirli Bir Süre Sonra Fonksiyon Çağırmak
Bu kodda, zamanli_fonksiyon
fonksiyonu 3 saniye sonra çağrılır. call_later()
metodu, zamanlayıcı işlevi görür.
🛑 34.14 Sinyal İşleme: Sistem Sinyallerine Tepki Verme
asyncio
, sistem sinyallerini asenkron olarak işlemek için mekanizmalar sağlar. Bu, özellikle uygulamanın düzgün bir şekilde sonlandırılması veya belirli sinyallere tepki verilmesi gereken durumlarda kullanılır.
loop.add_signal_handler()
: Sinyal İşleyici Eklemek
Bu örnekte, SIGINT
(Ctrl+C) sinyali alındığında sinyal_yakalandi
fonksiyonu çağrılır ve program sonlandırılır.
Not: Windows işletim sisteminde sinyal işleme sınırlamaları olabilir. Bu nedenle, sinyal işleme kodları platforma özgü farklılıklar gösterebilir.
🧵 34.15 Alt Süreçlerin Yönetimi: asyncio.create_subprocess_exec()
asyncio
, alt süreçleri (subprocess) asenkron olarak başlatmak ve yönetmek için işlevler sunar. Bu, dış komutların çalıştırılması ve çıktılarının işlenmesi gibi durumlarda kullanılır.
asyncio.create_subprocess_exec()
: Alt Süreç Başlatmak
Bu kodda, ls -l
komutu asenkron olarak çalıştırılır ve çıktısı elde edilir. create_subprocess_exec()
fonksiyonu, alt süreci başlatır ve communicate()
metodu ile çıktılar alınır.
Not: Windows sistemlerinde
ls
komutu yerinedir
komutu kullanılabilir.
🔄 34.16 asyncio.run_in_executor()
: CPU Yoğunluklu İşlemleri Yönetmek
asyncio.run_in_executor()
fonksiyonu, CPU yoğunluklu veya bloklayıcı işlemleri ayrı bir iş parçacığında veya süreçte çalıştırmak için kullanılır. Bu sayede, ana asenkron döngü engellenmeden işlemler gerçekleştirilir.
Örnek: Bloklayıcı Fonksiyonu Asenkron Hale Getirmek
Bu örnekte, bloklayici_fonksiyon
adlı senkron fonksiyon, run_in_executor
ile ayrı bir iş parçacığında çalıştırılır. Bu sayede, ana asenkron döngü engellenmez.
✅ 34.17 Sonuç
Bu bölümde, Python'da asyncio
modülünü kullanarak zamanlayıcılar, sinyaller ve alt süreçlerin yönetimi gibi ileri düzey asenkron programlama konularını ele aldık. Bu konular, özellikle yüksek performanslı ve ölçeklenebilir uygulamalar geliştirmek isteyen geliştiriciler için önemlidir.
🌐 Web Geliştirme İçin Asenkron Kütüphaneler
1. aiohttp
Hem istemci hem de sunucu tarafında asenkron HTTP işlemleri için kullanılan bir kütüphanedir. Yüksek performanslı web uygulamaları geliştirmek için idealdir.
Kullanım Örneği:
Bu örnekte, aiohttp
kullanılarak belirtilen URL'den asenkron olarak veri çekilmektedir.
2. FastAPI
Modern, hızlı (yüksek performanslı) web API'leri oluşturmak için kullanılan bir web framework'üdür. asyncio
ile tam uyumlu olup, otomatik olarak OpenAPI belgeleri oluşturur.
Kullanım Örneği:
Bu örnekte, FastAPI
kullanılarak basit bir GET endpoint'i tanımlanmıştır.
🗄️ Asenkron Veritabanı Kütüphaneleri
3. asyncpg
PostgreSQL veritabanı ile asenkron bağlantı kurmak için kullanılan yüksek performanslı bir kütüphanedir.
Kullanım Örneği:
Bu örnekte, asyncpg
kullanılarak PostgreSQL veritabanına bağlanılmakta ve basit bir sorgu çalıştırılmaktadır.
4. aiomysql
MySQL veritabanı ile asenkron bağlantı kurmak için kullanılan bir kütüphanedir.
Kullanım Örneği:
Bu örnekte, aiomysql
kullanılarak MySQL veritabanına bağlanılmakta ve versiyon bilgisi çekilmektedir.
🔄 Mesajlaşma ve Kuyruk Sistemleri
5. aio_pika
RabbitMQ gibi AMQP tabanlı mesajlaşma sistemleri ile asenkron iletişim kurmak için kullanılan bir kütüphanedir.
Kullanım Örneği:
Bu örnekte, aio_pika
kullanılarak RabbitMQ'ya bir mesaj gönderilmektedir.
📁 Dosya İşlemleri
6. aiofiles
Dosya okuma ve yazma işlemlerini asenkron olarak gerçekleştirmek için kullanılan bir kütüphanedir.
Kullanım Örneği:
Bu örnekte, aiofiles
kullanılarak bir dosyaya asenkron olarak yazı yazılmaktadır.
🔌 Diğer Faydalı Kütüphaneler
-
httpx: Asenkron HTTP istemcisi olarak kullanılabilir.
-
websockets: WebSocket protokolü ile asenkron iletişim kurmak için kullanılır.
-
trio: Alternatif bir asenkron programlama kütüphanesidir.
🧠 1. Gelişmiş Görev Yönetimi ve asyncio.gather()
asyncio.gather()
fonksiyonu, birden fazla coroutine'i eşzamanlı olarak çalıştırmak ve sonuçlarını toplamak için kullanılır.
Örnek:
Bu örnekte, üç görev eşzamanlı olarak başlatılır ve tamamlandıklarında sonuçları bir liste olarak döndürülür.
🔁 2. asyncio.Queue
ile Görev Kuyruğu Yönetimi
asyncio.Queue
, görevleri bir kuyrukta tutarak işçilerin bu görevleri alıp işlemesini sağlar. Bu yapı, üretici-tüketici senaryoları için idealdir.
Örnek:
Bu örnekte, üç işçi eşzamanlı olarak kuyruğa eklenen görevleri alıp işler.
🧵 3. asyncio.to_thread()
ile Bloklayıcı Fonksiyonları Asenkron Hale Getirme
Python 3.9 ve sonrasında, asyncio.to_thread()
fonksiyonu ile senkron (bloklayıcı) fonksiyonları ayrı bir iş parçacığında çalıştırarak asenkron hale getirebilirsiniz.
Örnek:
Bu örnekte, bloklayici_fonksiyon
ayrı bir iş parçacığında çalıştırılır ve ana asenkron döngü engellenmeden işlem devam eder.
🔄 4. asyncio.shield()
ile Görevlerin İptal Edilmesini Engelleme
asyncio.shield()
fonksiyonu, belirli bir coroutine'in iptal edilmesini engellemek için kullanılır.
Örnek:
Bu örnekte, uzun_süreli_görev
coroutine'i shield
ile korunmaya çalışılır, ancak görev iptal edildiği için CancelledError
yakalanır.
📚 5. asyncio.run()
ve Etkinlik Döngüsü Yönetimi
asyncio.run()
fonksiyonu, bir coroutine'i çalıştırmak için yeni bir etkinlik döngüsü oluşturur, çalıştırır ve döngüyü kapatır.
Örnek:
Bu örnekte, merhaba
coroutine'i asyncio.run()
ile çalıştırılır.
📦 1. Python Modülleri ve Paketler
✅ Modül Nedir?
Python'da bir modül, .py
uzantılı tek bir dosyadır ve bu dosya içinde tanımlı fonksiyonlar, sınıflar, değişkenler veya çalıştırılabilir kodlar bulunabilir.
örnek_modul.py
kullan.py
📁 Paket Nedir?
Birden fazla modül dosyasını tek bir klasör altında toplamak ve bu klasörü kullanarak daha organize bir yapıya geçmek mümkündür. Bu klasöre paket denir. Paketler, genellikle bir __init__.py
dosyası içerir (bu dosya boş da olabilir).
Dizin Yapısı:
modul1.py
modul2.py
kullan.py
🧱 2. Büyük Proje Yapısı (Python Proje Mimarisi)
Büyük bir Python projesinde düzeni sağlamak için klasör yapısı çok önemlidir. İşte standart bir proje yapısı:
Dosyaların İşlevleri:
-
app/: Ana uygulama dosyalarının yer aldığı dizin.
-
tests/: Test dosyaları.
-
requirements.txt: Kullanılan paketlerin listesi.
-
main.py: Uygulamanın çalıştırılacağı ana dosya.
🛠️ 3. __init__.py
Dosyasının Rolü
Bir klasörü Python paketi haline getirir. İçinde alt modülleri dışa aktarmak veya başlangıç kodları yazmak mümkündür.
Bu dosya boş olabilir ama genellikle içe aktarılan modülleri tek noktada kontrol etmek için kullanılır:
📚 4. if __name__ == "__main__"
Kullanımı
Python dosyalarının hem modül olarak hem de doğrudan çalıştırılabilir olması için kullanılır:
Bu kod, dosya doğrudan çalıştırıldığında ana_fonksiyon()
’u çağırır ama başka bir dosyada import edildiğinde çalışmaz.
🔄 5. Paket Yöneticileri ve pip
Bir projede ihtiyaç duyulan tüm bağımlılıkları requirements.txt
dosyasıyla tanımlayıp şu komutla yükleyebilirsin:
Örnek requirements.txt
:
🧠 1. Nesne Yönelimli Programlamaya Giriş
🚀 OOP Nedir?
Nesne Yönelimli Programlama, yazılımı nesneler (object) ve bu nesnelere ait davranışlar (method) etrafında şekillendirir. Python bu paradigmayı destekler ve oldukça esnek bir şekilde kullanmamıza olanak tanır.
🧱 2. Sınıf (Class) ve Nesne (Object)
✅ Sınıf Tanımı
✅ Nesne Oluşturma
🔧 3. __init__
ve self
Nedir?
-
__init__
: Nesne oluşturulduğunda otomatik olarak çalışan yapıcı (constructor) fonksiyondur. -
self
: Sınıf içindeki her metoda nesnenin kendisini referans olarak verir.
🧩 4. Nitelikler (Attributes) ve Metotlar (Methods)
📌 Nitelik: Nesneye ait veri
📌 Metot: Nesneye ait işlev
🔁 5. Miras Alma (Inheritance)
Bir sınıf başka bir sınıftan türeyebilir. Bu, kodun yeniden kullanılmasını sağlar.
🔁 6. Metot Geçersiz Kılma (Override)
Alt sınıfta, üst sınıftaki bir metodu aynı isimle yeniden tanımlayarak geçersiz kılabilirsin.
🔐 7. Kapsülleme (Encapsulation)
Verileri dış müdahaleden korumak için nitelikleri özel hale getirebilirsin.
🧩 8. Polimorfizm (Çok Biçimlilik)
Farklı sınıflardaki aynı isimli metodlar farklı şekillerde davranabilir.
🧠 9. @property
ve getter/setter
Veriye erişimi kontrol etmek için @property
dekoratörü kullanılır.
🧼 10. Sınıf ve Statik Metotlar
-
@classmethod
: Sınıfın kendisini parametre olarak alır (cls
). -
@staticmethod
: Sınıfla ilişkili ama bağımsız işlemler için kullanılır.
🏗️ 1. Katmanlı Yazılım Mimarisi Nedir?
Python’da büyük projeler genellikle katmanlı mimari (layered architecture) ile geliştirilir. Bu mimaride, her katman belirli bir görevi üstlenir.
🔧 Katmanlar:
-
Model (Veri Katmanı): Veritabanı işlemleri, veri modeli.
-
Controller (İş Katmanı): İş kuralları, işlemler, algoritmalar.
-
View (Sunum Katmanı): Kullanıcıya gösterilen çıktı (CLI, API, Web vs.).
🧱 2. MVC Mimarisi ile Python Projesi
Model-View-Controller (MVC), uygulamayı bölerek geliştirilebilirlik ve test edilebilirlik sağlar.
🎯 Amaç:
-
Kod tekrarını azaltmak
-
Test edilebilirliği artırmak
-
Bakımı kolaylaştırmak
📁 Örnek Dizin Yapısı:
📦 3. Model: models/kullanici.py
🔁 4. Controller: controllers/kullanici_controller.py
🖥️ 5. View: views/arayuz.py
🧪 6. main.py: Uygulamanın Giriş Noktası
🟢 Bu yapı, küçük bir terminal uygulaması için MVC mimarisine uygun bir Python projesinin temel örneğidir.
🗄️ 7. SQLite ile Veritabanı Entegrasyonu
Python’da hafif bir veritabanı olarak SQLite oldukça popülerdir.
Bağlantı Kurma ve Tablo Oluşturma:
💾 8. Veritabanı ile CRUD İşlemleri
Kayıt Ekleme:
Listeleme:
🚀 9. Flask ile API (İleri Seviye)
İlerleyen bölümlerde bu yapıyı Flask veya FastAPI ile REST API’ye dönüştüreceğiz.
🌐 1. Flask Nedir?
Flask, Python ile yazılmış hafif bir web framework'tür. Minimalist yapısı sayesinde, küçük uygulamalardan büyük projelere kadar esnek bir kullanım sunar.
🔧 Flask Kurulumu
🚀 2. Basit Bir Flask Uygulaması
app.py
🟢 python app.py
komutuyla çalıştır → tarayıcıda http://localhost:5000
aç.
📦 3. Route (Yol) Kavramı
Flask'ta her URL bir route (yol) ile eşleştirilir.
📥 4. Dinamik URL Kullanımı
http://localhost:5000/kullanici/ahmet
→ Merhaba Ahmet!
📡 5. JSON API Oluşturma
Tarayıcıda http://localhost:5000/api/mesaj
çağrıldığında JSON dönülür.
🔁 6. GET ve POST İşlemleri
POST isteği alalım:
POSTman veya JavaScript üzerinden şu şekilde istek atılabilir:
🧩 7. Flask ile MVC Yapısı
Flask projelerinde yapı genelde şu şekilde olur:
🔐 8. JWT ile Kimlik Doğrulama (Giriş)
pyjwt
Kurulumu:
Token Üretme:
Token Doğrulama:
🔒 9. Güvenlik için Token Kullanımı
🧪 10. Postman ile Test Etme
Flask ile geliştirdiğin her API endpoint’ini Postman gibi araçlarla test edebilirsin. JSON gönderip, header ekleyip, token doğrulama gibi işlemler için birebir.
Bu bölümde şunları öğrendik:
-
Flask ile web uygulaması kurmak
-
JSON API oluşturmak
-
MVC yapısında Flask kullanımı
-
JWT ile kullanıcı doğrulama
🗃️ 1. Flask + SQLAlchemy ile Veritabanı Kullanımı
Flask içinde veritabanı işlemleri için en çok kullanılan ORM (Object Relational Mapping) aracı: SQLAlchemy’dir.
🔧 Kurulum:
📁 Dosya Yapısı:
🔌 app/__init__.py
– Uygulama Başlatma
📄 app/models.py
– Veri Modelleri
📄 app/routes.py
– API Yolları
🏃 run.py
– Projeyi Başlat
🧾 2. Flask ile Form Verisi Alma
HTML formu ile veri gönderdiğinde request.form
üzerinden veriye ulaşabilirsin.
⚠️ 3. Hata Yönetimi (Error Handling)
Flask'ta hata durumlarına özel tepkiler verebilirsin.
🧩 4. Blueprint ile Modüler Yapı
Büyük projelerde her bölüm için ayrı Blueprint
oluşturmak işleri kolaylaştırır.
🔷 routes.py
📦 Blueprint'i Uygulamaya Dahil Et
🔐 5. Basit Kullanıcı Girişi
JWT kullanmadan, session tabanlı örnek giriş sistemi:
🛠️ 6. Projeyi Geliştirme İpuçları
✅ Her modül (model, view, controller) için ayrı dosya
✅ Gelişmiş hatalar için logging
modülü
✅ Formlar için Flask-WTF
kullanabilirsin
✅ Oturum yönetimi için Flask-Login
önerilir
Bu bölümde:
-
SQLAlchemy ile veritabanı bağlantısı
-
Blueprint ile modüler yapı
-
Form verisi alma
-
Hata yönetimi
-
Flask ile temel giriş sistemi
gibi temel yapı taşlarını oluşturduk.
🌐 1. Flask + Jinja2 ile Dinamik Web Sayfaları
Flask, varsayılan olarak Jinja2 şablon motorunu kullanır. Bu sayede Python verilerini HTML içinde kolayca gösterebiliriz.
📁 Klasör Yapısı:
🧱 2. templates/base.html
– Temel Şablon
📄 3. templates/index.html
– Ana Sayfa
🚀 4. app.py
– Flask Uygulaması
🎨 5. static/style.css
– Stil Dosyası
📋 6. Form Oluşturma ve İşleme
templates/form.html
Flask ile Form Verisini Alma
⚡ 7. AJAX ile Dinamik Veri Getirme (jQuery)
HTML - templates/ajax.html
Flask API - AJAX Endpoint
📦 8. Bootstrap ile Hızlı Tasarım
HTML sayfalarına Bootstrap ekleyerek hızlı ve modern arayüzler oluşturabilirsin.
Ve ardından:
🧪 9. Projeyi Geliştirme Önerileri
-
Jinja2 ile
for
,if
,include
,macro
gibi yapıları öğren -
Formlar için
Flask-WTF
kullan -
Javascript ile frontend dinamikliğini artır
-
AJAX ile sayfa yenilemeden veri gönder/al
Bu bölümde:
🔹 Flask + Jinja2 ile dinamik HTML oluşturmayı
🔹 CSS & Bootstrap ile görünüm eklemeyi
🔹 Form gönderimi
🔹 AJAX ile sayfa yenilemeden veri getirmeyi öğrendin.
✅ 1. Flask-WTF ile Form Doğrulama
🔧 Kurulum:
📄 forms.py
📄 HTML Şablon - login.html
📄 routes.py
– Formu Kullanma
🔐 2. Flask-Login ile Oturum Yönetimi
🔧 Kurulum:
📄 Uygulama Ayarları
📄 models.py
– Kullanıcı Modeli
📄 Kullanıcı Yükleyici
📄 Giriş-Çıkış
✅ 3. Mini Proje: Görev Listesi (To-Do App)
📄 models.py
📄 routes.py
📄 HTML – gorevler.html
💡 4. Projeyi Yayına Hazırlamak
-
app.config["SECRET_KEY"]
ayarla -
debug=False
ile çalıştır -
gunicorn
,docker
, veyarender.com
gibi servislerle dağıtım yap
Bu bölümde:
🔐 Kullanıcı girişi
📋 Form doğrulama
📦 Oturum yönetimi
📝 Basit bir görev listesi uygulaması
yaparak, tam anlamıyla web uygulaması yazmaya başladın.
📡 1. RESTful API Mimarisi
RESTful API’ler, client-server iletişimini sade ve organize hale getirir. İşte Flask ile basit bir görev API’si örneği:
📁 routes_api.py
🔗 Blueprint’e Dahil Et
🖼️ 2. Flask ile Dosya Yükleme
📄 HTML - upload.html
📄 Flask Route
📸 3. Yüklenen Görselleri Gösterme
Flask ile statik dosyaları göstermek çok kolaydır. Yüklenen klasörü /static/uploads
gibi yaparsan, erişim doğrudan sağlanabilir:
🔐 4. Rol Bazlı Yetkilendirme
Bazı sayfaların sadece admin tarafından erişilebilmesini sağlamak için kullanıcı rollerini kontrol ederiz.
📄 models.py
📄 Örnek Kullanım
📧 5. Flask ile E-posta Gönderimi
🔧 Kurulum
📄 Ayarlar
📤 Mail Gönderimi
⚠️ Gmail veya diğer servislerde uygulama şifreleri kullanman gerekebilir.
🔧 6. İleri Seviye Geliştirme Önerileri
-
API'lerde JWT Authentication (Flask-JWT-Extended)
-
Frontend tarafı için Vue.js, React veya HTMX
-
Dosya yüklerken uzantı ve boyut kontrolü
-
Kullanıcı kayıt onayı için e-posta doğrulama
-
Hata loglama için
logging
modülü
Bu bölümde:
-
RESTful API mimarisi
-
Dosya yükleme ve gösterme
-
Rol bazlı erişim kontrolü
-
Flask ile e-posta gönderimi
gibi web projelerinde çok işe yarayan yetenekleri öğrendik.
🎯 Bu bölümde neler var?
✅ Flask ile büyük proje yapısı
✅ Kullanıcı kayıt & giriş sistemi
✅ Şifre sıfırlama (e-posta ile)
✅ API dokümantasyonu (Swagger UI)
✅ Test yazma ve hata takibi
✅ Deploy (yayına alma) rehberi
🏗️ 1. Profesyonel Proje Mimarisi
Flask'ta her şey tek bir dosyada olmaz. Büyük projelerde yapı şöyle olur:
🔄 2. app/__init__.py
– Uygulama Kurulumu
👤 3. Kullanıcı Kayıt & Giriş Sistemi
Kayıt formu: forms.py
Kullanıcı modeli: models.py
Giriş/çıkış route'ları: routes/auth.py
🔑 Şifreleme İçin:
📄 Kayıt Örneği
🔁 4. Şifre Sıfırlama (Token + E-posta)
📄 Token Oluştur
📄 Token Doğrulama
📧 E-posta ile Link Gönder
📘 5. API Dokümantasyonu (Swagger UI)
🔧 Kurulum
📄 Basit Kullanım
Swagger UI: http://localhost:5000/docs
✅ 6. Test Yazmak (unittest)
🚀 7. Deploy – Flask Uygulamasını Yayına Almak
🔧 1. requirements.txt
Oluştur
🔧 2. WSGI Dosyası – run.py
☁️ 3. Deploy Araçları
-
Render.com (ücretsiz, kolay)
-
Vercel (FastAPI için)
-
Heroku (artık sınırlı)
-
DigitalOcean / AWS / Docker
🔁 Sonraki Adımlar İçin Öneriler
✔ React veya Vue ile REST API kullan
✔ Flask-Admin veya custom admin panel
✔ Kullanıcı eylem log'ları
✔ Flask ile PDF, grafik, veri analiz
✔ Versiyonlama ve CI/CD kullan (GitHub Actions)
Bu bölümlerle beraber:
🔧 Projeyi büyük yapıya taşıdın
📧 E-posta sistemi kurdun
🔐 Güvenli kullanıcı sistemine geçtin
🧪 Test ve dokümantasyon ekledin
🚀 Yayınlama işlemini öğrendin
📊 Python ile Veri Analizi ve Görselleştirme
1️⃣ Pandas ile Veri Analizi
📦 Pandas Nedir?
Pandas, Python'da veri analizini kolaylaştıran bir kütüphanedir. Genellikle CSV, Excel gibi dosyaları okur ve tablo gibi işlememizi sağlar.
🔧 Kurulum
📄 CSV Okuma
📊 Temel İşlemler
2️⃣ Matplotlib ile Grafik Çizme
📦 Kurulum
📈 Temel Grafik
3️⃣ Seaborn ile Gelişmiş Görselleştirme
Seaborn, Matplotlib üzerine inşa edilmiştir ama daha şık ve istatistiksel grafikler için idealdir.
🔧 Kurulum
📊 Örnek: Kategorik Veri Çizimi
4️⃣ Pandas ile Veri Temizleme
Veri setleri genellikle eksik ya da kirli olur. İşte yaygın temizlik işlemleri:
📘 5. Proje: Öğrenci Başarı Analizi
Bir ogrenciler.csv
dosyasını analiz edelim:
📄 Python Kodu
🧠 Neler Öğrendik?
-
Pandas ile veri okuma, analiz ve temizleme
-
Matplotlib ile çizgi ve çubuk grafikleri
-
Seaborn ile istatistiksel grafikler
-
Mini proje: Öğrenci başarı analizi
🌐 Python ile Web Scraping ve Otomasyon
🔧 1. Web Scraping Nedir?
Web scraping, bir web sitesindeki verileri otomatik olarak çekme işlemidir. Mesela bir haber sitesinden başlıkları ya da bir e-ticaret sitesinden ürün fiyatlarını almak gibi.
🛠 Kullanılan Kütüphaneler:
-
requests
→ Web sayfasını çağırır -
BeautifulSoup
→ HTML verisini işler -
Selenium
→ Sayfalarla etkileşim kurar (JavaScript ağırlıklı sitelerde)
🔹 2. Requests ile Sayfa Çekme
🔹 3. BeautifulSoup ile HTML Ayrıştırma
📘 Uygulama: Bir haber sitesinden başlıkları çek.
🔹 4. Örnek: Döviz Kuru Çekme
🧪 5. Selenium ile Otomasyon
Selenium, butona tıklama, giriş yapma, kaydırma gibi işlemler yapmamıza olanak tanır.
Ayrıca ChromeDriver indirilmelidir.
💼 6. Proje: E-Ticaret Sitesinden Ürün Fiyatı Çekme
🔁 7. Otomatik Zamanlama (Schedule)
🧠 Neler Öğrendik?
✅ Web scraping temel araçları: requests
, BeautifulSoup
✅ Sayfa okuma, veri çekme, veri ayıklama
✅ Selenium ile sayfalarla etkileşim
✅ Fiyat takip sistemi ve otomatik çalışma
🧰 Python ile Excel, Word ve PDF İşlemleri
📊 1. Excel İşlemleri (openpyxl)
🧩 openpyxl Kurulumu
📄 Excel Dosyası Oluşturma
📄 Excel Dosyası Okuma
📄 2. Word Belgeleri (python-docx)
🔧 Kurulum
📄 Word Belgesi Oluşturma
📄 3. PDF Oluşturma (fpdf)
📦 Kurulum
📄 Basit PDF Oluşturma
📘 Proje: Otomatik Raporlama Sistemi
Senaryo: Bir not listesi dosyasından veriler çekilecek ve hem Excel, hem Word hem de PDF olarak çıktı alınacak.
🔄 Adımlar:
-
veri.csv
dosyasını oku -
openpyxl
ile Excel çıktısı oluştur -
docx
ile Word belgesi oluştur -
fpdf
ile PDF çıktısı ver
Örnek CSV Dosyası (veri.csv
)
Kodu: Tüm Raporlama
🧠 Neler Öğrendik?
✅ Excel dosyası oluşturup veri yazma
✅ Word belgesi oluşturma ve biçimlendirme
✅ PDF çıktısı alma ve düzenleme
✅ Otomatik raporlama sistemi kurma
🤖 Python ile Makine Öğrenmesine Giriş
🔬 1. Makine Öğrenmesi Nedir?
Makine öğrenmesi, verilerden otomatik olarak öğrenen ve tahminler yapabilen algoritmaların genel adıdır. Python, bu alanda en popüler dildir çünkü çok güçlü kütüphanelere sahiptir:
📦 Kullanılan Kütüphaneler:
-
numpy
→ Sayısal işlemler -
pandas
→ Veri işleme -
scikit-learn
→ Makine öğrenmesi algoritmaları -
matplotlib / seaborn
→ Görselleştirme
🔧 2. Gerekli Kurulumlar
🔢 3. NumPy Temelleri
📊 4. Veri Seti Hazırlama
scikit-learn
içinde hazır veri setleri vardır. Örneğin iris veri seti:
🧠 5. Regresyon Modeli (LinearRegression)
Tahmin problemi: Örneğin ev fiyatını tahmin etmek.
🧪 6. Sınıflandırma (Classification)
Karar ağacı ile çiçek türü tahmini:
📈 7. Görselleştirme
🧠 8. Gerçek Veri Seti ile Uygulama
🎯 Proje: Öğrenci notlarıyla başarı tahmini yap.
Veri:
Model: Lojistik regresyon
🧠 Neler Öğrendik?
✅ NumPy ve veri işlemenin temelleri
✅ Hazır veri setleri ile model eğitme
✅ Regresyon ve sınıflandırma modelleri
✅ Tahmin, test ve değerlendirme
✅ Görselleştirme ve yorumlama
🧪 Gerçek Hayat Python Projeleri: Yapay Zeka + Web + Otomasyon
📌 1. Proje: E-Posta Spam Tespiti
🔹 Amaç:
Bir e-postanın spam (istenmeyen) olup olmadığını tahmin eden bir sistem.
🧾 Örnek Veri (CSV Formatı)
📦 Gerekli Kütüphaneler
🧠 Model Eğitimi
📦 2. Modeli Kaydetme (pickle
)
🌐 3. Flask ile Web Arayüzü Oluşturma
📁 Flask Proje Yapısı
app.py
(Flask Web Sunucusu)
index.html
(Basit Form)
🤖 4. Bonus Proje: Mini Python ChatBot
🧠 Neler Öğrendik?
✅ Metin verisini analiz etme ve sınıflandırma
✅ Makine öğrenmesi modelini dışa aktarma
✅ Flask ile Python'u web'e taşıma
✅ HTML ile basit arayüz
✅ Kullanıcıdan veri alıp tahmin yapma
✅ Komut satırından chatbot geliştirme
🔗 Python ile Web API Geliştirme ve Entegrasyon (FastAPI, Requests)
🧩 1. API Nedir?
API (Application Programming Interface), iki uygulamanın birbirine veri göndermesini sağlar. Örneğin:
-
Hava durumu verisini bir servisten almak
-
Kendi modelini bir mobil uygulamaya açmak
-
Başka bir siteden kripto para fiyatlarını çekmek
⚙️ 2. Python ile API'ye İstek Atmak (requests
)
🌦️ Örnek: Hava Durumu API’si Kullanımı
🚀 3. Kendi API'nı Yaz: FastAPI ile
📁 Proje Yapısı
main.py
▶️ API'yi Başlat
Tarayıcıdan:
📍 http://127.0.0.1:8000/docs
FastAPI, otomatik olarak Swagger UI ile belgeleri sunar. Harika bir özellik!
📲 4. Mobil/Frontend için API Açma
Modelini POST ile aç:
Mobil uygulama bu adrese JSON gönderir:
Ve gelen yanıt:
🧠 5. API ile Dosya Yükleme
📨 6. Otomatik E-Posta Gönderimi
🧠 Neler Öğrendik?
✅ API nedir, nasıl kullanılır?
✅ Başka servisten veri alma (requests)
✅ Kendi API’ni yazma (FastAPI)
✅ Model tahminini API üzerinden alma
✅ Dosya yükleme, JSON POST
✅ Otomatik e-posta entegrasyonu
🛠️ Python ile Tam Uygulama Geliştirme ve Otomasyon Projeleri
🔄 1. Otomatik Excel Raporlama + Mail Gönderme
📊 Excel Raporu Oluştur (openpyxl)
📧 Excel Dosyasını Mail ile Gönder
📑 2. Otomatik PDF Oluşturma
🔌 3. API + Arayüz + Model + Otomasyon Birleşimi
Tam uygulama mimarisi:
🧩 4. Otomatik Veri Analizi + Tahmin + Raporlama
Örnek: Öğrenci notlarını oku, tahmin yap, rapor oluştur, mail gönder.
📲 5. Python ile SaaS Mantığında Servis
-
Kullanıcı → Web formu üzerinden veri girer
-
API → Veriyi alır, modele gönderir
-
Model → Tahmin döner
-
Rapor → PDF/Excel hazırlanır
-
E-posta → Kullanıcıya rapor gönderilir
Tamamen otomatik ve gerçek bir servis mantığı!
🧠 Final: Python ile Gerçek Projelerle Uygulama Geliştirme
Proje | Konular |
---|---|
📊 Not Tahmin Sistemi | ML + API + Arayüz + Rapor |
📨 Spam E-posta Filtre | NLP + Naive Bayes |
📉 Kripto Bot | Web scraping + API |
📬 Otomatik Mail Gönderici | Otomasyon + Excel/PDF |
📁 Dosya Yönetim Sistemi | GUI + File Handling |
🏁 Sonuç: Artık Bir Python Uzmanısın!
🎓 Bu 20.000 kelimelik dev Python eğitiminde:
✅ Temellerden başlayarak ileri seviyeye ulaştık
✅ Gerçek projeler geliştirdik
✅ Otomasyon, AI, Web API, Mail, Raporlama öğrendik
✅ Python ile profesyonel uygulamalar geliştirdik