Python'da bir yeni insanım. Lütfen python'un neden anahtar çantası olmadığını açıklayın? Neden Python anahtar kutusunda yok?
cevap
Biz bir noktada kabul ama adlandırılmış sabitleri ilan etme yolunu kalmadan size çok teşekkür ederim, verimli bir atlama tablo oluşturmak için hiçbir yolu yoktur. Öyleyse bıraktığımız tek şey, elif-elif-else zincirleriyle yapabileceğimiz bir şey için sözdizimsel şeker. Tüm tartışmalar için bkz. PEP 275 ve PEP 3103.
Özetle, çeşitli tekliflerin, insanların ne tür bir dava yapacağıyla ilgili açıklamalarına dayanamadıkları ve mevcut çözümlerde (sözlük tabanlı gönderim, el-elif zincirleri, getattr- tabanlı sevkiyat veya eski moda polimorfizm aynı yönteme yönelik farklı uygulamalara sahip objelere gönderilir).
'durumda 1:' oldukça sabittir, ancak * sabitler *, her yerde sihirli numaralar kullanmanız gerekir ve sihirli sayıları teşvik eden bir sözdizimi yapısı istemiyoruz. – user2357112
Gerçekten, bu sorunun yanıtlanması için dokümanlar içinde bir bölüm var. Aşağıya bakın:
Why isn’t there a switch or case statement in Python?
TL; DR: Mevcut alternatifleri (getattr
veya dict.get
yoluyla dinamik bir gönderme, if
/elif
zincirleri) gayet güzel bütün kullanım örneğini kapsar. i ifadeleri ise zincirleme ile yapılır aynı işi alabilirsiniz
rağmen Java
, C++
, C#
destek en Onları ben switch statements
hiç kullanmadım.
Sorulan soruya cevap vermiyor ... – qwr
Soru 1: 1'e cevap vermese de, bunun eskimiş olup olmadığına karar vermek için bir ölçüt olarak kullanılabilen güçlü bir ifadedir. Hiç bir "switch" ifadesi aradığınız davayı aldın mı? – user1767754
Hiçbir zaman bir performans sorununa ihtiyacınız yoktur (noob) :( –
def f(x):
return {
1 : 'output for case 1',
2 : 'output for case 2',
3 : 'output for case 3'
}.get(x, 'default case')
Sen Python anahtar vaka olarak kullanabilir ve durum aynı değil ise durum
eşleşmiyor eğer Bunlar çok yararlı değildir varsayılan dönecektir. 'Switch' yerine 'el ...' ile yapışmak daha güvenlidir. Dikkatli değilseniz, korkunç böceklere yol açarlar. – Unni
Bir geçici çözüm için [Python'da Anahtar/Vaka uygulamasında herhangi bir değer var mı?] (Https://stackoverflow.com/q/5440990/6521116) –