Jestem nowicjuszem w Pythonie. Proszę wyjaśnić, dlaczego python nie ma przełącznika?Dlaczego Python nie ma przełącznika?
Dziękuję bardzo
Jestem nowicjuszem w Pythonie. Proszę wyjaśnić, dlaczego python nie ma przełącznika?Dlaczego Python nie ma przełącznika?
Dziękuję bardzo
Uważaliśmy go w jednym punkcie, ale bez konieczności sposób deklarowania nazwanych stałych, nie ma sposobu, aby wygenerować efektywne tabelę skoku. Więc pozostaniemy z cukrem syntaktycznym dla czegoś, co moglibyśmy już zrobić z łańcuchami if-elif-elif-else.
Aby uzyskać pełną dyskusję, zobacz PEP 275 i PEP 3103.
W przybliżeniu uzasadnieniem jest to, że różne propozycje nie spełniły oczekiwań ludzi co do tego, co zrobi switch-case i nie udoskonalili istniejących rozwiązań (takich jak wysyłanie słowników, łańcuchy elifa, getattring). w oparciu o wysyłkę lub staroświecki odbiór polimorfizmu do obiektów o różnych implementacjach dla tej samej metody).
'przypadek 1:' jest dość stały, ale bez * nazwane * stałe, musielibyśmy wszędzie używać magicznych liczb, a nie chcemy konstrukcji składni, która zachęca do magicznych liczb. – user2357112
Istnieje dosłownie sekcja w dokumentach, aby odpowiedzieć na to pytanie. Patrz poniżej:
Why isn’t there a switch or case statement in Python?
TL; DR: istniejące alternatywy (dynamiczny wysyłka poprzez getattr
lub dict.get
, if
/elif
łańcuchów) obejmować wszystkie przypadki użycia dobrze.
Nawet Java
, C++
, C#
wsparcie to oni, nigdy nie używany switch statements
jak mogę dostać tę samą pracę z Przykuty if.
Nie odpowiada na pytanie ... – qwr
Mimo że nie odpowiada na Pytanie 1: 1, jest to mocne stwierdzenie, które może być użyte jako miara do odgadnięcia, czy jest ono przestarzałe, czy nie. Czy kiedykolwiek miałeś przypadek, w którym szukałeś instrukcji "switch"? – user1767754
Ponieważ nigdy nie potrzebujesz problemu z wydajnością (noob) :( –
def f(x):
return {
1 : 'output for case 1',
2 : 'output for case 2',
3 : 'output for case 3'
}.get(x, 'default case')
Można to wykorzystać jako przypadku przełącznika w Pythonie i jeśli warunek nie pasuje powróci domyślne jeśli warunek nie pasuje
Nie są one bardzo pomocne. Bezpieczniej jest trzymać się 'if ... elif' niż' switch'. Prowadzą do strasznych błędów, jeśli nie jesteś ostrożny. – Unni
Aby obejść ten problem, odwołaj się do [Czy jest jakaś wartość dla implementacji przełącznika/obudowy w Pythonie?] (Https://stackoverflow.com/q/5440990/6521116) –