Python Switch Beyanı

Giriş

Switch ifadesi programınızın akışını kontrol etmek için güçlü ve kullanışlı bir araçtır. Belirli bir değişkenin veya ifadenin değerine bağlı olarak hızlı ve kolay bir şekilde birden fazla kod dalı oluşturmanıza olanak tanır. Belirli bir değişkenin değerine bağlı olarak, 2'den fazla (ancak sınırlı sayıda) değere sahip olabilen farklı bir mantık yürütmeniz gerektiğinde yaygın olarak kullanılır.

Bu makalede, Python'da switch ifadesinin nasıl kullanılacağını keşfedeceğiz ve diğer kontrol yapılarına göre avantajlarını tartışacağız. İster Python'da yeni olun ister deneyimli bir geliştirici olun, switch ifadesi daha temiz, daha verimli kod yazmanıza yardımcı olabilir.

V3.10'dan önce

Python switch deyimi dilde yerel olarak mevcut olmadan önce, programcıların aynı işlevselliği elde etmek için diğer kontrol yapılarını kullanması gerekiyordu. Yaygın bir yaklaşım, her kod dalının test edilen değişkenin farklı bir değeriyle ilişkilendirildiği bir dizi if-else ifadesi kullanmaktı.

Örneğin, aşağıdaki kodu göz önünde bulundurun:

value = "foo"

if value == "foo":
    print("foo was selected")
elif value == "bar":
    print("bar was selected")
else:
    print("Nothing valid was selected")

Bu kodda, değişkenin değerine göre hangi kod dalının çalıştırılacağını belirlemek için if-else ifadesini kullanıyoruz. value. Eğer value "foo"ya eşitse kodun ilk dalı yürütülecektir. Eğer value "bar"a eşitse kodun ikinci dalı yürütülecektir. Aksi takdirde, koddaki else blok yürütülecektir.

Bu yaklaşım işe yarasa da, değişkenin olası değerlerinin sayısı arttıkça hızla hantal hale gelebilir. Ayrıca kodun okunmasını ve anlaşılmasını zorlaştırabilir.

Python'da anahtar benzeri bir ifade oluşturmak için kullanılabilecek başka bir yaklaşım da sözlük kullanmaktır. Bu yaklaşımda, sözlüğün anahtarları test edilen değişkenin olası değerleridir ve değerler de kodun karşılık gelen dallarıdır.

Örneğin, aşağıdaki kodu göz önünde bulundurun:

value = "foo"

switch = {
    "foo": lambda: print("foo was selected"),
    "bar": lambda: print("bar was selected"),
    "default": lambda: print("Nothing valid was selected"),
}

switch.get(value, "default")()

Bu kodda, adında bir sözlük tanımladık. switchdeğişkenin olası değerlerini temsil eden tuşlarla value. Her anahtar için değer olarak ilgili kod dalını içeren bir lambda fonksiyonu atadık. Uygun kod dalını çalıştırmak için şunu kullanırız: get() Verilen anahtarın sözlükte mevcut olmaması durumunda kullanılacak varsayılan değeri belirlememize olanak tanıyan sözlüğün yöntemi.

Bu yaklaşım, if-else ifadelerini kullanmaktan daha esnek ve kompakt olsa da, özellikle her daldaki kod karmaşıksa, okunması ve anlaşılması yine de zor olabilir. Ayrıca bazı programcılar için kafa karıştırıcı olabilecek lambda fonksiyonlarının kullanımını gerektirir. Herhangi bir nedenle bu makaledeki diğer yöntemleri kullanamadığınız sürece bu yöntemi kullanmanızı önermiyoruz.

Python v3.10'da Python switch ifadesinin kullanıma sunulmasıyla birlikte programcılar artık programlarının akışını belirli bir değişkenin veya ifadenin değerine dayalı olarak kontrol etmenin daha kullanışlı ve sezgisel bir yoluna sahipler. Bir sonraki bölümde Python'da gerçek bir switch ifadesinin nasıl kullanılacağını keşfedeceğiz.

The match/case Bildirim (v3.10'dan sonra)

Python v3.10'dan sonra switch ifadesi şu komut kullanılarak gerçekleştirilir: match anahtar kelime. Bu anahtar kelime, belirli bir değişkenin veya ifadenin değerini bir dizi kalıpla karşılaştırarak test etmenize olanak tanıyan bir kalıp eşleştirme ifadesi oluşturmak için kullanılır. Bir eşleşme bulunursa ilgili kod dalı çalıştırılır.

Örneğin, aşağıdaki kodu göz önünde bulundurun:

value = "foo"

match value:
    case "foo":
        print("foo was selected")
    case "bar":
        print("bar was selected")
    case _:
        print("Nothing valid was selected")

En iyi uygulamalar, endüstri tarafından kabul edilen standartlar ve dahil edilen hile sayfası ile Git'i öğrenmek için uygulamalı, pratik kılavuzumuza göz atın. Googling Git komutlarını durdurun ve aslında öğrenmek o!

Bu kodda şunu kullanıyoruz: match değişkenin değerini test eden bir kalıp eşleştirme ifadesi oluşturmak için anahtar kelime value bir dizi kalıba karşı. Eğer value "foo"ya eşitse kodun ilk dalı yürütülecektir. Eğer value “bar”a eşitse kodun ikinci dalı yürütülecektir. Aksi taktirde else bloğundaki kodlar çalıştırılacaktır.

Suya düşmek

Python'daki switch ifadeleri ile diğer dillerdeki geleneksel switch ifadeleri arasındaki temel farklardan biri Python'un match bildirimi düşüşü desteklemiyor. Başka bir deyişle, bir eşleşme bulunduğunda ve karşılık gelen kod dalı çalıştırıldığında, match ifade biter ve içinde başka kod yoktur. match ifadesi yürütülür. Diğer dillerde bu genellikle kullanılarak elde edilir. break burada gerekli olmayan veya desteklenmeyen anahtar kelime.

Geleneksel bir switch ifadesinde geçişle aynı davranışı elde etmek istiyorsanız, | birden fazla vakayı eşleştirmek için operatör. Bu operatör, tek bir işlemde birden fazla desen belirlemenizi sağlar. caseve bu dalın yürütülmesini tetiklemek için kalıplardan herhangi biri eşleştirilebilir.

Örneğin, aşağıdaki kodu göz önünde bulundurun:

value = "y"

match value:
    case "yes" | "y":
        print("The user confirmed")
    case _:
        print("The user denied")

Burada eğer değeri value “evet”e eşittir or “y”, kodun ilk dalı yürütülecek. Bu, geleneksel bir switch ifadesindeki düşme davranışına eşdeğerdir.

Varsayılanları

Muhtemelen yukarıdaki örneklerden fark ettiğiniz gibi, “varsayılan” durum bir alt çizgi ( (_). Bu, "joker karakter" olarak kabul edilir ve tüm değerlerle eşleşir. Önceki durumlardan biri değerle eşleşirse, varsayılan kod dalı atlanır ve yürütülmez.

Sonuç

Gördüğünüz gibi Python match (diğer adıyla "switch") ifadesi, programınızın akışını kontrol etmenin güçlü ve kullanışlı bir yolunu sunar. İster Python'da yeni olun ister deneyimli bir geliştirici olun, switch ifadesi daha temiz, daha verimli kod yazmanıza yardımcı olabilir.

Zaman Damgası:

Den fazla Yığın kötüye kullanımı