- Puan
- 28
- Yaş
- 118
Giriş
Temel Python konularını öğrendikten sonra birçok kişi aynı noktada takılır. Değişkenler, döngüler, koşullar ve basit fonksiyonlar öğrenilmiştir ancak gerçek projeler geliştirmeye başlanınca kodun karmaşıklaştığı görülür. İşte bu noktada orta seviye Python bilgisi devreye girer.Bu bölümde veri yapıları, fonksiyon mantığı, kapsam (scope), hata yönetimi, dosya işlemleri, nesne yönelimli programlama ve daha temiz kod yazma teknikleri ele alınacaktır.
Fonksiyonlar
Fonksiyonlar, belirli bir işi yerine getiren ve gerektiğinde tekrar kullanılabilen kod bloklarıdır.Basit örnek:
<span>def selamla():<br> print("Merhaba Dünya")<br><br>selamla()</span>
Parametre kullanımı:
<span>def selamla(isim):<br> print("Merhaba", isim)<br><br>selamla("Ahmet")</span>
Bir fonksiyonun en önemli özelliklerinden biri veri döndürebilmesidir.
<span>def topla(a, b):<br> return a + b<br><br>sonuc = topla(10, 20)<br><br>print(sonuc)</span>
Burada return ifadesi fonksiyonun ürettiği sonucu dışarıya aktarır.
Scope (Kapsam)
Bir değişkenin nereden erişilebilir olduğunu belirleyen yapıya scope denir.Örnek:
<span>isim = "Ali"<br><br>def yazdir():<br> print(isim)<br><br>yazdir()</span>
Bu örnekte isim değişkeni globaldir.
Şimdi local örneğe bakalım:
<span>def test():<br> sayi = 10<br><br>print(sayi)</span>
Bu kod hata verecektir çünkü sayi sadece fonksiyon içerisinde bulunmaktadır.
Büyük projelerde global değişken kullanımını minimum seviyede tutmak önemlidir.
Listeler
Python'da en sık kullanılan veri yapılarından biridir.<span>meyveler = <span data-placeholder-token="true">[<br> "Elma",<br> "Armut",<br> "Muz"<br>]</span></span>
Eleman erişimi:
<span>print(meyveler<span data-placeholder-token="true">[0]</span>)</span>
Listeye eleman ekleme:
<span>meyveler.append("Çilek")</span>
Eleman silme:
<span>meyveler.remove("Armut")</span>
Liste uzunluğu:
<span>print(len(meyveler))</span>
Döngü ile gezmek:
<span>for meyve in meyveler:<br> print(meyve)</span>
Tuple
Tuple yapıları listeye benzer ancak değiştirilemez.<span>koordinat = (10, 20)<br><br>print(koordinat<span data-placeholder-token="true">[0]</span>)</span>
Aşağıdaki işlem hata verir:
<span>koordinat<span data-placeholder-token="true">[0]</span> = 50</span>
Tuple kullanımı verinin değişmemesi gereken durumlarda avantaj sağlar.
Set
Tekrarlanan verileri otomatik kaldırır.<span>sayilar = {1, 2, 3, 3, 3, 4}<br><br>print(sayilar)</span>
Çıktı:
<span>{1,2,3,4}</span>
Set yapıları özellikle benzersiz kayıtları tutmak için kullanılır.
Dictionary
Gerçek projelerde son derece önemlidir.<span>kullanici = {<br> "isim": "Ali",<br> "yas": 25,<br> "sehir": "Konya"<br>}</span>
Veri çekme:
<span>print(kullanici<span data-placeholder-token="true">["isim"]</span>)</span>
Yeni veri ekleme:
<span>kullanici<span data-placeholder-token="true">["email"]</span> = "[email protected]"</span>
Güncelleme:
<span>kullanici<span data-placeholder-token="true">["yas"]</span> = 30</span>
List Comprehension
Python'un güçlü özelliklerinden biridir.Normal yöntem:
<span>liste = []<br><br>for i in range(10):<br> liste.append(i)</span>
Pythonic yöntem:
<span>liste = <span data-placeholder-token="true">[i for i in range(10)]</span></span>
Çift sayılar:
<span>ciftler = <span data-placeholder-token="true">[i for i in range(100) if i % 2 == 0]</span></span>
Bu yöntem daha okunabilir ve daha kısa kod yazılmasını sağlar.
Dosya İşlemleri
Dosya açmak:<span>with open("veri.txt", "r") as dosya:<br> icerik = dosya.read()</span>
Dosyaya yazmak:
<span>with open("veri.txt", "w") as dosya:<br> dosya.write("Merhaba")</span>
Satır satır okumak:
<span>with open("veri.txt") as dosya:<br><br> for satir in dosya:<br> print(satir)</span>
Dosya işlemlerinde with kullanımı dosyanın otomatik kapanmasını sağlar.
Hata Yönetimi
Kullanıcı her zaman doğru veri girmez.Örnek:
<span>sayi = int(input("Sayı gir: "))</span>
Kullanıcı harf girerse program çöker.
Çözüm:
<span>try:<br><br> sayi = int(input("Sayı gir: "))<br><br>except ValueError:<br><br> print("Geçersiz giriş")</span>
Birden fazla hata:
<span>try:<br><br> dosya = open("veri.txt")<br><br>except FileNotFoundError:<br><br> print("Dosya bulunamadı")<br><br>except PermissionError:<br><br> print("Yetki hatası")</span>
Nesne Yönelimli Programlama
Büyük projelerin temelidir.Sınıf oluşturma:
<span>class Kullanici:<br><br> pass</span>
Constructor:
<span>class Kullanici:<br><br> def __init__(self, isim):<br> self.isim = isim</span>
Nesne oluşturma:
<span>u1 = Kullanici("Ali")</span>
Metot tanımlama:
<span>class Kullanici:<br><br> def __init__(self, isim):<br> self.isim = isim<br><br> def selamla(self):<br> print("Merhaba", self.isim)</span>
Kullanımı:
<span>u1 = Kullanici("Ali")<br><br>u1.selamla()</span>
Kalıtım (Inheritance)
Kod tekrarını azaltır.<span>class Insan:<br><br> def konus(self):<br> print("Konuşuyor")<br><br>class Ogrenci(Insan):<br><br> pass<br><br>o = Ogrenci()<br><br>o.konus()</span>
Ogrenci sınıfı Insan sınıfının özelliklerini kullanabilir.
Modüller
Kodları parçalara ayırmayı sağlar.matematik.py
<span>def topla(a,b):<br> return a+b</span>
main.py
<span>import matematik<br><br>print(matematik.topla(5,10))</span>
Bu yöntem büyük projelerde zorunlu hale gelir.
Lambda Fonksiyonları
Küçük işlemler için kullanılır.<span>topla = lambda a,b: a+b<br><br>print(topla(10,20))</span>
Map ve Filter
Map:<span>sayilar = <span data-placeholder-token="true">[1,2,3,4]</span><br><br>sonuc = list(map(lambda x:x*2,sayilar))<br><br>print(sonuc)</span>
Filter:
<span>sayilar = <span data-placeholder-token="true">[1,2,3,4,5,6]</span><br><br>sonuc = list(filter(lambda x:x%2==0,sayilar))<br><br>print(sonuc)</span>
JSON
Modern uygulamalarda sık kullanılır.<span>import json<br><br>veri = {<br> "isim":"Ali",<br> "yas":25<br>}<br><br>json_veri = json.dumps(veri)<br><br>print(json_veri)</span>
JSON'dan Python'a:
<span>import json<br><br>veri = '{"isim":"Ali"}'<br><br>sonuc = json.loads(veri)<br><br>print(sonuc<span data-placeholder-token="true">["isim"]</span>)</span>
Sonuç
Bu noktaya gelen bir kişi artık yalnızca Python sözdizimini bilen biri değildir. Veri yapılarıyla çalışabilir, dosya işlemleri gerçekleştirebilir, hataları yönetebilir, sınıflar oluşturabilir ve orta ölçekli projeler geliştirebilir.Bir sonraki aşamada Decorator, Generator, Iterator, SQLite, Requests, Threading, Multiprocessing ve Asyncio konularına geçmek mantıklı olacaktır. Bu konular öğrenildiğinde Python ile profesyonel seviyede uygulamalar geliştirmek mümkün hale gelir.