exploit paylaşım grubumuz: t.me/HTTPwnn

Python Orta Seviye Rehberi

Katılım
16 Haz 2026
Mesaj
111
Reaksiyon
83
xentr_thread_starter

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.
 

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.
Öncekine göre iyi ama öncekinde kod bloklarında konu daha güzel duruyordu elinize saglık.
 

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.
konulara biraz daha özen gösterin, eline sağlık
 
Geri
En Üst