Ana içeriğe atla

Python Switch Case Deyimi: Yeni Başlayanlar İçin Kılavuz

Python'un match-case özelliğini keşfedin: sözdizimi, veri bilimi ve ML uygulamaları ve geleneksel switch-case ile karşılaştırmalı bir analiz.
Güncel 22 Nis 2026  · 5 dk. oku

Python 3.10 ile tanıtılan Python'un match-case deyimini keşfedin ve yapısal desen eşlemenin Python programlamasına nasıl yeni bir zarafet ve güç kattığını öğrenin. Sözdizimine, veri bilimi ve makine öğrenmesindeki uygulamalarına ve hatta diğer dillerdeki geleneksel switch-case deyimleriyle nasıl karşılaştırıldığına değineceğiz. Python’a yeniyseniz, mutlaka Yeni Başlayanlar için Python Kopya Kağıdı içeriğimize göz atın. 

Geleneksel Switch Case Deyimlerini Anlama

Python 3.10'dan önce, Python geliştiricileri switch case işlevselliğini taklit etmek için çoklu if-elif-else deyimlerini veya sözlükleri kullanmak zorundaydı. İşte if-elif-else kullanılarak temel bir örnek:

day = "Saturday"

if day == "Saturday" or day == "Sunday":
    print(f"{day} is a weekend.")
elif day in ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]:
    print(f"{day} is a weekday.")
else:
    print("That's not a valid day of the week.")

# Saturday is a weekend.

Python 3.10'da Match ve Case'e Giriş

match-case ile birlikte Python artık yapısal desen eşleme temelli bir özellikle, daha temiz ve daha güçlü koşullu mantık yazmanıza olanak tanıyor.

Yapısal Desen Eşleme Nedir?

PEP 634 ile tanıtılan yapısal desen eşleme, veri yapılarını biçimlerine ve içeriklerine göre eşleştirmenin ve ayrıştırmanın bir yoludur. Geleneksel değer eşlemeden daha esnektir; diziler, eşlemeler ve hatta özel sınıf örnekleriyle çalışmayı mümkün kılar.

Match-Case'in Temel Sözdizimi

match-case’in nasıl çalıştığına dair basit bir örnek. Haftanın günlerini hafta sonu ve hafta içi olarak sınıflandıralım:

day = "Monday"

# Match the day to predefined patterns
match day:
    case "Saturday" | "Sunday":
        print(f"{day} is a weekend.")  # Match weekends
    case "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday":
        print(f"{day} is a weekday.")  # Match weekdays
    case _:
        print("That's not a valid day of the week.")  # Default case

# Monday is a weekday.

Örnekten çıkarılacak temel kavramlar:

  1. case ile Desen Eşleme:

    • case "Saturday" | "Sunday": Listelenen desenlerden herhangi birini eşleştirir. | sembolü, OR (veya) işleci gibi davranır.

    • case _: Geçersiz girdileri yakalayan genel (varsayılan) durum.

  2. break Gerekmez: Geleneksel switch-case’in aksine, Python ilk başarılı eşleşmeden sonra match bloğundan çıkar.

match-case ve if-elif-else Karşılaştırması

Aşağıdaki tabloda iki tekniğin nasıl karşılaştırıldığına bakabilirsiniz: 

Özellik if-elif-else match-case
Tanıtıldığı Sürüm Erken Python sürümlerinden beri mevcut Python 3.10'da tanıtıldı
Sözdizimi if, elif ve else anahtar sözcüklerini kullanır match ve case anahtar sözcüklerini kullanır
Okunabilirlik Birçok koşul olduğunda uzayıp gidebilir Karmaşık desenlerde daha öz ve okunaklı
Varsayılan Durum Varsayılan senaryo için else kullanır Varsayılan durum için joker karakter olarak _ kullanır
Desen Eşleme Basit koşul kontrolleriyle sınırlı Karmaşık desen eşlemeyi destekler (ör. diziler)
Performans Genel olarak basit koşullarda verimlidir Karmaşık desenlerde potansiyel olarak daha performanslı
Kapsam Her blok girintiyle açık bir kapsam gerektirir Kapsamlar doğal olarak case bloklarının altında tanımlanır
Kullanım Alanları Basit karar verme görevleri için uygun Karmaşık veri yapılarının ayrıştırılması için ideal
Esneklik Skaler karşılaştırmalarla sınırlıdır Karmaşık veri türlerini ve yapıları eşleştirebilir
Otomatik Çıkış Bazı dillerde açıkça break gerektirir Bir case eşleştiğinde otomatik olarak çıkar

Python'da Match ve Case'in İleri Düzey Kullanım Senaryıları

Veri bilimi uygulamaları

Python'un match-case deyimi, veri bilimi projelerinde veri ön işleme görevlerinde oldukça faydalı olabilir. Ön işleme çoğu zaman verileri belirli ölçütlere göre farklı gruplara ayırmayı içerir.

Örneğin, bir hayvan veri kümesinde, onları memeliler, kuşlar, sürüngenler vb. gibi sınıflarına göre kategorize etmek isteyebilirsiniz. İşte basitleştirilmiş bir örnek:

animal = "Eagle"
match animal:
    case "Eagle" | "Parrot":
        print("Bird")
    case "Lion" | "Tiger":
        print("Mammal")
    case "Python" | "Crocodile":
        print("Reptile")
    case _:
        print("Unknown Class")

# Bird

Bu yaklaşım, karmaşık if-else mantığını sadeleştirir ve özellikle birden çok kategori içeren büyük veri kümeleriyle çalışırken kodu daha okunabilir ve sürdürülebilir hale getirir.

Web geliştirme

Django veya Flask gibi web çatılarında, HTTP isteklerini yönlendirmek veya belirli hata kodlarını ele almak için match-case kullanabilirsiniz. Çevrimiçi kursumuzla Geliştiriciler için Python hakkında daha fazla bilgi edinin. 

Örnek: HTTP Metotlarını Yönlendirme

# Example: Handling HTTP methods in a Flask-like application
method = "POST"

match method:
    case "GET":
        print("Fetching resource...")
    case "POST":
        print("Creating resource...")
    case "PUT":
        print("Updating resource...")
    case "DELETE":
        print("Deleting resource...")
    case _:
        print("Unsupported HTTP method.")

# Creating resource...

Açıklama:

  • method değişkeni HTTP istek türünü temsil eder.
  • Her case, olası bir HTTP metoduna karşılık gelir ve aksi halde birden çok if-elif deyimini basitleştirir.

API işleme

API yanıtlarını işlerken, farklı durum kodlarını ele almak veya JSON yanıtlarını kategorize etmek için match-case kullanılabilir.

Örnek: Durum Kodlarını Ele Alma

# Example: API response status code handling
status_code = 200

match status_code:
    case 200:
        print("Request succeeded.")
    case 404:
        print("Resource not found.")
    case 500:
        print("Server error. Please try again later.")
    case _:
        print("Unknown status code.")

# Request succeeded.

Bu yaklaşım, API sonuçlarını yorumlamayı ve yanıtlamayı kolaylaştırır.

Basit ve karmaşık desen eşleme

Python’un match-case yapısı, sabit değer eşlemenin ötesine geçer; daha karmaşık desenleri de işleyebilir. İşte bir ayrım:

Basit sabit eşleme

Yukarıdaki örneklerde gösterildiği gibi, string veya tamsayı gibi basit eşleşmeler temiz ve okunabilir mantık sağlar.

Karmaşık desen eşleme

Yapılandırılmış verilerle (ör. sözlükler, diziler) çalışırken, match-case verileri verimli biçimde çıkarmak ve işlemek için kullanılabilir.

Örnek: Veri Yapılarını Eşleme

# Example: Categorizing configurations
config = {"type": "database", "name": "PostgreSQL", "version": 13}

match config:
    case {"type": "database", "name": name, "version": version}:
        print(f"Database: {name} (Version {version})")
    case {"type": "cache", "name": name}:
        print(f"Cache system: {name}")
    case _:
        print("Unknown configuration.")

# Database: PostgreSQL (Version 13)

Açıklama:

  • İlk case, sözlükten name ve version değerlerini çıkarır; bu da yapılandırılmış verilerle çalışmayı kolaylaştırır.

  • Bu, Python’un yapısal desen eşlemesinin, geleneksel switch-case uygulamalarının çok ötesindeki gerçek gücünü gösterir.

İşte yalnızca ilgili eklemelerin yer aldığı kısaltılmış bölüm:

Temel Switch-Case'in Ötesine Geçmek

Basit değer eşlemenin ötesinde, Python'un match-case yapısı, onu diğer dillerdeki geleneksel switch-case deyimlerinden ayıran birkaç özellik sunar.

Koruyucu koşullar (guard clauses)

Guard, bir case'e eklenen ve eşleşmenin gerçekleşmesi için doğru olması gereken bir if koşuludur. Bu, desen eşlemeyi ek mantıkla birleştirmenize olanak tanır — ki bu, geleneksel switch deyimlerinin yapamadığı bir şeydir:

match point:
    case (x, y) if x == y:
        print(f"Point is on the diagonal at {x}")
    case (x, y) if x > 0 and y > 0:
        print(f"Point {point} is in the first quadrant")
    case (x, y):
        print(f"Point {point} is somewhere else")

# Point (3, 7) is in the first quadrant
 

Desen tek başına durumları ayırt etmeye yetmediğinde guard'lar faydalıdır.

Switch-case’in ötesinde: yapı çözümleyen desenler

Yukarıdaki örnekler switch-case tarzı kullanıma odaklansa da, Python'un match-case yapısının dizileri, sözlükleri ve sınıf örneklerini de yapı çözümleyebildiğini — eşleşmenin bir parçası olarak içlerinden değer yakalayabildiğini — bilmeye değer. Bu, diğer dillerdeki switch deyimlerinin sunduklarının çok ötesine geçer ve yapısal desen eşlemenin Python’a eklenmesinin ana nedenlerinden biridir.

Örneğin, bir sınıf örneğini eşlemek:

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

point = Point(0, 5)

match point:
    case Point(x=0, y=0):
        print("Origin")
    case Point(x=0, y=y):
        print(f"On the Y-axis at {y}")
    case Point():
        print("Somewhere else on the plane")

# On the Y-axis at 5

Bu daha ileri düzey desenleri derinlemesine keşfetmek isterseniz, yapısal desen eşleme üzerine resmi eğitim içeriği olan PEP 636'ya göz atın.

Python Switch Case Yaygın Hatalar ve En İyi Uygulamalar

Hata ayıklama ipuçları

Python'da match-case kullanırken sık yapılan bir hata, varsayılan durum için alt çizgiyi (_) eklemeyi unutmaktır; bu, geleneksel if-else deyimlerindeki 'else' ile eşdeğerdir. Belirli hiçbir durum eşleşmezse beklenmedik davranışlara yol açabilir. Beklenmeyen veya çeşitli değerleri ele almak için her zaman bir varsayılan durum ekleyin.

Performansla ilgili hususlar

match-case deyimi güçlü bir araç olsa da, özellikle büyük ölçekli uygulamalarda Python kodunun performansı üzerindeki etkisi göz önünde bulundurulmalıdır. Çok sayıda durumun olduğu veya karmaşık desen eşlemenin yapıldığı senaryolarda performans potansiyel olarak etkilenebilir. Gerçek dünya senaryolarında kodunuzu profillemek ve performans açısından test etmek, olası performans sorunlarını anlamak ve hafifletmek için kritik önemdedir.

Python Match-Case ve Geleneksel Switch-Case Karşılaştırması

Karşılaştırmalı analiz

Python'un match-case yapısı, Java veya C++ gibi dillerde bulunan geleneksel switch-case deyimlerinden önemli ölçüde farklıdır. Örneğin Java'da switch deyimi yalnızca skaler değerleri (tamsayılar ve enum türleri gibi) eşleştirmekle sınırlıyken, Python'un match-case’i çok daha esnek bir desen eşleme yeteneği sunar; diziler ve sınıf örnekleri gibi karmaşık veri türlerini de eşleştirebilir. Bu da Python’un uygulamasını daha güçlü kılar, ancak desen eşleme kavramlarının daha derinlemesine anlaşılmasını gerektirir.

Geçiş kılavuzu

C++ veya Java gibi dillerdeki geleneksel switch-case deyimlerine aşina olan programcılar için, Python'un match-case yapısına geçiş, basit değer eşlemeden desen eşlemeye doğru bir düşünce değişimi gerektirir.

Python'un match-case’inin yalnızca bir switch-case olmadığını; veri türlerini yapıbozumuna uğratmak ve karmaşık yapılardan bilgi çıkarmak için çok yönlü bir araç olduğunu anlamak önemlidir. Farklı veri türleri ve desenlerle pratik yapmak, bu özelliği ustalıkla kullanmanın anahtarıdır.

Sonuç

Python'un 3.10 sürümünde tanıtılan match ve case deyimleri, modern Python’un yerleşik bir özelliği haline geldi. O zamandan beri, yapısal desen eşleme, dilin etkin olarak desteklenen tüm sürümlerinde — en son kararlı sürüm olan Python 3.14.4 (Nisan 2026) dahil, ayrıca 3.13 ve 3.12'de — erişilebilir, güvenilir bir araca dönüştü.

Tam kapsamlı eğitimimizde Python Fonksiyonları hakkında daha fazla okuyabilir ve bu kavramı, Orta Düzey Python kursumuzda diğer konularla birlikte keşfedebilirsiniz.


Matt Crabtree's photo
Author
Matt Crabtree
LinkedIn

Yapay zekâ ve eğitim teknolojileri alanında kıdemli editör. Veri ve yapay zekâ trendlerini keşfetmeye odaklı.  

Python Switch Case SSS

Bir match-case deyiminde iki durum aynı girdiyi eşleşirse ne olur?

Python, durumları göründükleri sırayla değerlendirir. İlk eşleşen durum çalıştırılır ve match bloğu hemen sona erer.

match-case özel sınıflar veya nesnelerle kullanılabilir mi?

Evet, match-case özel sınıflarla çalışabilir. Öznitelikleri eşleyecek desenler tanımlayabilir veya ek mantık uygulamak için guard’lar kullanabilirsiniz.

match-case if-elif-else’tan daha hızlı mı?

Performans farkı, koşulların karmaşıklığına bağlıdır. Basit değer kontrollerinde her ikisi de benzer performans gösterir. Ancak, karmaşık desen eşleme için match-case daha verimli ve okunabilir olabilir.

match-case deyiminde guard nedir?

Guard, bir case’den sonra belirtilen ve bir durumun ne zaman eşleşeceğini daha da hassaslaştıran bir koşuldur. Örneğin:

match value:
    case x if x > 10:
        print("Value is greater than 10.")

3.10'dan önceki Python sürümlerinde match-case kullanılabilir mi?

Hayır, match-case yalnızca Python 3.10 ve sonraki sürümlerde mevcuttur. Daha eski sürümler için benzer işlevsellik için if-elif-else veya sözlük eşlemesi kullanabilirsiniz.

Konular

Bugün Python Öğrenin

Program

Python Programlama

19 sa
Programlama becerilerinizi geliştirin. Kodu nasıl optimize edeceğinizi, fonksiyonları ve testleri nasıl yazacağınızı ve en iyi uygulama yazılım mühendisliği tekniklerini nasıl kullanacağınızı öğrenin.
Ayrıntıları GörRight Arrow
Kursa Başla
Devamını GörRight Arrow