Resim

Python Match/Case

Python Match/Case: Desen Eşleştirme ile Koşullu Akış (Python 3.10+)

Yeni Nesil Akış Kontrolü

Merhaba! Geleneksel olarak, bir değişkenin birden fazla olası değere sahip olup olmadığını kontrol etmek için uzun if-elif-else yapılarını kullanırdık. Bu yapılar, özellikle çok sayıda koşul olduğunda, kodu okunması zor bir "merdiven" haline getirebiliyordu.

match ifadesi (Pattern Matching), bu sorunu çözmek için Python 3.10 ile tanıtıldı. Temel olarak bir değişkenin veya ifadenin yapısını (desenini) kontrol eder ve eşleşen ilk duruma (case) göre kodu çalıştırır.

Bu yapı, diğer dillerdeki switch/case yapısına benzer, ancak Python'da çok daha güçlüdür ve sadece sabit değerleri değil, karmaşık veri yapılarını da kontrol edebilir.


1. Temel Yapı: match ve case

match ifadesi, bir değişkeni veya ifadeyi alır ve bunu sırayla tanımlanan case (durum) bloklarıyla karşılaştırır.

Söz Dizimi

  1. match anahtar kelimesiyle başlar ve ardından kontrol edilecek ifade/değişken gelir.

  2. Her bir olası değer/desen için case anahtar kelimesi kullanılır.

  3. Eşleşen ilk case bloğu çalışır ve match yapısından çıkılır.

  • Örnek: Kullanıcıdan gelen komuta göre farklı işlem yapma.

    komut = "AC"
    match komut:
        case "AC":
            print("Cihaz açılıyor.")
        case "KAPAT":
            print("Cihaz güvenli bir şekilde kapatılıyor.")
        case "RESET":
            print("Sistem yeniden başlatılıyor.")
        # Çıktı: Cihaz açılıyor.

Kendiniz Deneyebilirsiniz:


2. Varsayılan Durum: case _ (Wildcard)

Tıpkı else gibi, match yapısında da yukarıdaki case bloklarından hiçbirinin eşleşmemesi durumunda çalışacak bir varsayılan durum tanımlanabilir. Bu, alt çizgi (_) sembolü ile gösterilir ve en sona konulmalıdır.

komut = "BILINMEYEN"
match komut:
    case "AC":
        print("Açıldı.")
    case "KAPAT":
        print("Kapatıldı.")
    case _: # Diğer tüm durumlar
        print(f"Hatalı komut: {komut}")
# Çıktı: Hatalı komut: BILINMEYEN

Kendiniz Deneyebilirsiniz:


3. Desen Eşleştirmenin Gücü: Koleksiyonlar

match ifadesini if-elif'ten ayıran en büyük fark, sadece basit değerleri değil, Listeler, Tuple'lar ve Sözlükler gibi veri yapılarını da kontrol edebilmesidir.

a. Tuple (Demet) Eşleştirme

Bir koordinatın yapısını ve değerlerini aynı anda kontrol edebiliriz:

nokta = (5, 0) # Kontrol edilecek veri
match nokta:
    case (x, 0): # Y ekseni 0 ise (X ekseni üzerindeyse)
        print(f"X ekseninde, x={x}")
    case (0, y): # X ekseni 0 ise (Y ekseni üzerindeyse)
        print(f"Y ekseninde, y={y}")
    case (x, y): # Genel durum
        print(f"Genel koordinat: ({x}, {y})")
# Çıktı: X ekseninde, x=5
# NOT: (x, 0) deseni eşleşti ve x'in değeri 5 olarak atanıp kullanıldı.

b. Liste Eşleştirme

Listelerin eleman sayısını ve ilk/son elemanlarını kontrol edebiliriz:

veri = ["Hata", 404]
match veri:
    case ["Hata", kod]: # Listenin ilk elemanı "Hata" ise
        print(f"Hata Kodu: {kod}")
    case ["Başarı", _]: # Başlangıcı "Başarı" ise
        print("İşlem Başarılı.")
    case _:
        print("Bilinmeyen veri formatı.")
# Çıktı: Hata Kodu: 404

Kendiniz Deneyebilirsiniz:


4. Koşullu Desenler (if Guards)

Bir case bloğunun sadece desen eşleştiğinde değil, aynı zamanda ek bir Boolean koşul da doğru olduğunda çalışmasını isteyebiliriz. Bu, if koruyucuları (guards) ile yapılır.

puan = 92
match puan:
    case p if p > 90: # p değişkenine 92 atandı VE 92 > 90 koşulu doğru
        print("Mükemmel, A+!")
    case p if p > 80:
        print("İyi, B.")
    case _:
        print("Diğer.")
# Çıktı: Mükemmel, A+!

Kendiniz Deneyebilirsiniz:


Daha Temiz Kod, Daha Güçlü Mantık

match/case ifadesi, Python'da okunaklı, hızlı ve karmaşık desenleri işleyebilen kod yazma yeteneğinizi büyük ölçüde artırır. Eğer Python 3.10 veya üzeri kullanıyorsanız, özellikle çok sayıda koşul veya yapısal veri kontrolü gerektiren durumlarda 

🔥 Python Kariyerinizi Hemen Başlatın!

Hemen kursumuza kaydolun ve bu güçlü araçları kullanarak profesyonel Python geliştiricisi olma yolunda ilk adımı atın. Kursumuzdaki uygulamalı modüller, sizi sadece bir yazılımcı adayı değil, hazır bir profesyonel haline getirecek. Python Eğitimini Udemy platformunda bulabilirsiniz.

[ Python Eğitimi Sıfırdan İleri Seviye ]

Tıklayın ve Python Eğitimine Hemen Kaydolun!

Yorumlar

Bu blogdaki popüler yayınlar

Python random Modülü

Python print()

Yazılım Nedir?