Python'da Switch Case Fonksiyonları Nasıl Uygulanır? [2022]
Yayınlanan: 2021-01-08İçindekiler
Tanıtım
Python'da bu karmaşık If-else ifadelerini yazmanın bir alternatifi olup olmadığını hiç merak ettiniz mi? Birden çok 'If' ifadesinin kodunuzu karıştırmasını istemiyorsanız, kodunuzda kontrol akışını uygulamak için daha temiz ve daha hızlı bir yol sağlayan Switch case ifadesini kullanmayı düşünmelisiniz. C++, Java, Ruby ve diğer programlama dillerinden farklı olarak Python, bir switch case ifadesi sağlamaz, ancak bu ifadenin çalışması için birkaç geçici çözüm sunar.
Örneğin Python , diğer programlama dillerindeki Python Switch büyük/küçük harf ifadeleri gibi çalışan kod parçacıklarınızı oluşturmanıza olanak tanır. Bu blogda daha sonra switch-case deyimlerini uygulamanın yolları hakkında daha fazla bilgi edineceksiniz. Python hakkında daha fazla bilgi edinmek istiyorsanız, veri bilimi kurslarımıza göz atın.
Python'da Switch İfadesi nedir?
Genel olarak, anahtar, bir değişkende depolanan değeri test eden ve karşılık gelen durum ifadelerini yürüten bir kontrol mekanizmasıdır. Switch case deyimi, programınızdaki kontrol akışını tanıtır ve kodunuzun birden çok 'if' deyimiyle karışık olmamasını sağlar.
Bu nedenle, kodunuz izleyicilere titiz ve şeffaf görünür. Programcıların kodlarında kontrol akışını uygulamak için kullandıkları harika bir programlama özelliğidir. Switch case ifadesi, case ifadelerinde belirtilen değerleri kodunuzdaki değişkenlerle karşılaştırarak çalışır.
Python Switch Case Statement Nasıl Uygulanır?
Her zaman C++ veya Java gibi dillerde kod yazdıysanız, Python'un switch case ifadesinin olmamasını garip bulabilirsiniz. Bunun yerine Python, anahtar-durum ifadelerini uygulamak için sözlük, Python sınıfları veya Python lambda işlevleri gibi çok sayıda geçici çözüm sunar.
Python'da switch case ifadesinin olmamasının tam nedenini bilmek istiyorsanız, PEP 3103'ü kontrol etmelisiniz .
Bu alternatiflere derinlemesine dalmadan önce, bir switch case fonksiyonunun diğer programlama dillerinde tipik olarak nasıl çalıştığını görelim.
Aşağıdaki örnekte C programlama dilini kullandık.
geçiş (ayOfYıl) { dava 1: printf(“%s”, Ocak); kırmak; durum 2: printf(“%s”, Şubat); kırmak; durum 3: printf(“%s”, Mart); kırmak; durum 4: printf(“%s”, Nisan); kırmak; durum 5: printf(“%s”, Mayıs); kırmak; durum 6: printf(“%s”, Haziran); kırmak; durum 7: printf(“%s”, Temmuz); kırmak; durum 8: printf(“%s”, Ağustos); kırmak; durum 9: printf(“%s”, Eylül); kırmak; durum 10: printf(“%s”, Ekim); kırmak; durum 11: printf(“%s”, Kasım); kırmak; durum 12: printf(“%s”, Aralık); kırmak; varsayılan: printf(“Yanlış ay”); kırmak; } |
Şimdi Python switch case fonksiyon alternatiflerine geçelim ve bu alternatiflerin nasıl çalıştığını örnekler yardımıyla anlayalım.
Okuyun: Python'da Kariyer Fırsatları: Bilmeniz Gereken Her Şey
Sözlük Eşlemesini Kullanma
Diğer programlama dillerine aşinaysanız, sözlüğün bir grup nesneyi bellekte depolamak için anahtar/değer çiftlerini kullandığını biliyor olmalısınız. Anahtar/durum deyimlerine alternatif olarak bir sözlük kullandığınızda, anahtar/değer çiftinin anahtarları bir durum olarak çalışır.
Aşağıdaki örnek, bir sözlük kullanarak switch case ifadesinin uygulamasını gösterir. Burada, yılın hangi ayı, ayı olduğunu yazdırmak için bir ay() işlevi tanımlıyoruz.
İlk olarak, vaka ifadeleri oluşturarak başlayın ve her vaka için ayrı işlevler yazın. Varsayılan durumu ele alan bir işlev yazdığınızdan emin olun.
kesin ocak(): dönüş "Ocak" def şubat(): dönüş "Şubat" def mart(): dönüş "mart" kesin nisan(): dönüş "Nisan" def mayıs(): dönüş "mayıs" def haziran(): "Haziran" dönüşü kesin temmuz(): dönüş "Temmuz" kesin ağustos(): "ağustos" dönüşü kesin eylül(): dönüş "Eylül" def ekim(): dönüş "Ekim" kesin kasım(): dönüş "Kasım" def aralık(): dönüş "Aralık" def varsayılan(): "Yanlış ay" döndür |
Ardından, Python'da bir sözlük nesnesi oluşturun ve programınızda tanımladığınız tüm işlevleri saklayın.
değiştirici = { 0: 'ocak', 1: 'şubat', 2: 'mart', 3: 'nisan', 4: 'mayıs', 5: 'haziran', 6: 'temmuz', 7: 'ağustos', 8: 'eylül', 9: 'ekim', 10: 'kasım', 11: 'aralık' } |
Son olarak, programınızda tamsayıyı girdi olarak kabul etmesi gereken, sözlük araması yapan ve ilgili işlevleri çağıran bir anahtar işlevi oluşturun.
def ay(ayOfYıl): dönüş switcher.get(ayOfYıl, varsayılan)() |
Tam kod şöyle görünecek
kesin ocak(): dönüş "Ocak" def şubat(): dönüş "Şubat" def mart(): dönüş "mart" kesin nisan(): dönüş "Nisan" def mayıs(): dönüş "mayıs" def haziran(): "Haziran" dönüşü kesin temmuz(): dönüş "Temmuz" kesin ağustos(): "ağustos" dönüşü ![]() kesin eylül(): dönüş "Eylül" def ekim(): dönüş "Ekim" kesin kasım(): dönüş "Kasım" def aralık(): dönüş "Aralık" def varsayılan(): "Yanlış ay" döndür
değiştirici = { 0: 'ocak', 1: 'şubat', 2: 'mart', 3: 'nisan', 4: 'mayıs', 5: 'haziran', 6: 'temmuz', 7: 'ağustos', 8: 'eylül', 9: 'ekim', 10: 'kasım', 11: 'aralık' } def ay(ayOfYıl): dönüş switcher.get(ayOfYıl, varsayılan)() yazdır(anahtar(1)) yazdır(geçiş(0)) |
Yukarıdaki kod aşağıdaki çıktıyı yazdırır
Şubat Ocak ayı |
Ayrıca Okuyun: Yeni Başlayanlar için 42 Heyecan Verici Python Projesi Fikirleri ve Konuları
Python Sınıflarını Kullanma
Switch-case deyimlerini uygulamaya alternatif olarak Python sınıflarını da kullanabilirsiniz. Sınıf, özellikleri ve yöntemleri olan bir nesne oluşturucudur. Bunu yukarıdaki aynı örneğin yardımıyla daha iyi anlayalım. Burada bir Python switch sınıfı içinde bir switch metodu tanımlayacağız.
Örnek vermek
İlk olarak, yılın bir ayını argüman olarak alan ve sonucu bir dizgeye dönüştüren bir Python switch sınıfı içinde bir switch metodu tanımlayacağız.
sınıf PythonSwitch: def ay(self, monthOf Year): varsayılan = "Yanlış ay" return getattr(self, 'case_' + str(yearOf Year), lambda: default)() |
Not: Yukarıdaki örnekte iki şey kullandık: anahtar kelime lambda ve getattr() yöntemi.
- Python'da isimsiz bir fonksiyon tanımlamak için lambda anahtar sözcüğünü kullanırız. Lambda anahtar sözcüğü, bir kullanıcı geçersiz girdi girdiğinde varsayılan işlevi çağırır.
- Python'da bir işlevi çağırmak için getattr() yöntemi kullanılır.
Şimdi, her durum için ayrı işlevler oluşturun.
def Ocak(kendi): dönüş "Ocak"
def şubat(kendi): dönüş "Şubat" def mart(self): "Mart" dönüşü
def nisan(kendi): dönüş "Nisan"
def may(self): dönüş "Mayıs"
def haziran(kendi): "Haziran" dönüşü def temmuz(kendi): dönüş "Temmuz"
def ağustos(kendi): dönüş "Ağustos"
def eylül(kendi): dönüş "Eylül" def ekim(kendi): dönüş "Ekim"
def kasım(kendi): dönüş "Kasım"
def aralık(kendi): dönüş "Aralık" |
Tam kod şöyle görünecek
sınıf PythonSwitch: def ay(self, monthOf Year): varsayılan = "Yanlış ay" return getattr(self, 'case_' + str(yearOf Year), lambda: default)() def Ocak(kendi): dönüş "Ocak"
def şubat(kendi): dönüş "Şubat"
def mart(self): "Mart" dönüşü
def nisan(kendi): dönüş "Nisan"
def may(self): dönüş "Mayıs"
def haziran(kendi): "Haziran" dönüşü def temmuz(kendi): dönüş "Temmuz"
def ağustos(kendi): dönüş "Ağustos"
def eylül(kendi): dönüş "Eylül" def ekim(kendi): dönüş "Ekim"
def kasım(kendi): dönüş "Kasım"
def aralık(kendi): dönüş "Aralık" my_switch = PythonSwitch() yazdır (my_switch.ay(1)) yazdır (my_switch.ay(10)) |
Yukarıdaki kod aşağıdaki çıktıyı yazdırır
Ocak ayı Ekim |
Kontrol edin: Hindistan'da Python Geliştirici Maaşı
Çözüm
Bu blogda, switch-case deyimleri, switch-case deyimlerinin alternatifleri nelerdir ve bunların nasıl kullanılacağını öğrendiniz. Yukarıda açıklandığı gibi Python'da yerleşik bir anahtar durumu işlevi yoktur, ancak kodunuzun düzenli ve temiz görünmesini sağlamak ve daha iyi performans elde etmek için her zaman bu alternatifleri kullanabilirsiniz.
Veri bilimi hakkında bilgi edinmek istiyorsanız, IIIT-B & upGrad'ın çalışan profesyoneller için oluşturulmuş ve 10'dan fazla vaka çalışması ve proje, uygulamalı uygulamalı atölye çalışmaları, endüstri uzmanlarıyla mentorluk, 1 Endüstri danışmanlarıyla bire bir, en iyi firmalarla 400+ saat öğrenim ve iş yardımı.
Sıradan bir sözlük ile bir Python sözlüğü arasında ayrım yapın.
Python Sözlüğü veya "Dict", sırasız bir öğe koleksiyonunu depolamak için kullanılan Python'un yerleşik bir veri yapısıdır. Tek değerleri depolayan diğer Python veri yapılarının aksine, sözlük veri yapısı, her anahtarın benzersiz olduğu anahtar-değer çiftlerini depolar. Anahtar/değer çiftlerinin ekleme sırasını hatırlamaz ve anahtarlar arasında yinelenir. Öte yandan, Ordered Dictionary veya OrderedDict, anahtar/değer çiftlerinin ekleme sırasını takip eder. Ayrıca, çift bağlantılı liste uygulaması nedeniyle Python'da normal bir sözlükten daha fazla bellek tüketir. Aynı anahtarı siler ve yeniden eklerseniz, OrderedDict ekleme sırasını hatırladığı için orijinal konumuna eklenecektir.
Nametuple'ın hangi işlemleri, onu switch vakaları için uygun bir seçenek haline getiriyor?
Python'daki adlandırılmış grup çeşitli işlemler gerçekleştirir. Aşağıda, adlandırılmış küme tarafından gerçekleştirilen en yaygın işlemlerden bazılarının bir listesi bulunmaktadır. Bir sözlükten farklı olarak, bir adlandırılmış kümedeki öğelere dizinleriyle erişilebilir. Öğelere erişmenin alternatif yolu, anahtar adlarıdır. make() işlevi bir adlandırılmış grup döndürür. _asadict() işlevi, eşlenen değerlerden oluşturulan sıralı bir sözlük döndürür. _replace() işlevi, argümanı olarak bir anahtar adı alır ve onunla eşlenen değerleri değiştirir. _fileds() işlevi, verilen adlandırılmış grubun tüm anahtar adlarını döndürür.
Veri depolamak için listeleri ne zaman tercih ederiz?
Python listesi, aşağıdaki senaryolarda verileri depolamak için en iyi veri yapısı olarak kabul edilir - Farklı veri türlerine sahip çeşitli değerleri depolamak için bir liste kullanılabilir ve bunlara yalnızca ilgili endeksleriyle erişilebilir. Elemanlar üzerinde matematiksel işlemler yapmanız gerektiğinde, elemanları doğrudan matematiksel olarak çalıştırmanıza izin verdiği için bir liste kullanılabilir. Bir liste yeniden boyutlandırılabildiğinden, saklanacak öğe sayısından emin olmadığınızda verileri depolamak için kullanılabilir. Liste öğeleri kolayca değiştirilebilir ve küme ve sözlükten farklı olarak yinelenen öğeleri de saklayabilir.