para - ¿Por qué Python no tiene conmutador?
python ubuntu (3)
Soy un novato en Python. Por favor, explica por qué Python no tiene caja de conmutación?
Hay literalmente una sección en los documentos para responder a esto. Vea abajo:
¿Por qué no hay un conmutador o una declaración de caso en Python?
TL; DR: las alternativas existentes (envío dinámico a través de getattr
o dict.get
, if
/ elif
cadenas) cubren todos los casos de uso muy bien.
Lo consideramos en un punto, pero sin tener una manera de declarar constantes nombradas, no hay manera de generar una tabla de salto eficiente. Así que todo lo que nos quedaría con el azúcar sintáctico es algo que ya podríamos hacer con las cadenas if-elif-elif-else.
Vea PEP 275 y PEP 3103 para una discusión completa.
Aproximadamente, el razonamiento es que las diversas propuestas no cumplieron con las expectativas de la gente sobre lo que haría el caso de cambio, y no pudieron mejorar las soluciones existentes (como el envío basado en diccionario, las cadenas if-elif, el envío basado en getattr o Desplazamiento de polimorfismo a la antigua a objetos con diferentes implementaciones para el mismo método).
def f(x):
return {
1 : ''output for case 1'',
2 : ''output for case 2'',
3 : ''output for case 3''
}.get(x, ''default case'')
Puede usar esto como caso de cambio en python y si la condición no coincide, devolverá el valor predeterminado si la condición no coincide