¿Reemplazos para la declaración de cambio en Python?
Quiero escribir una función en Python que devuelva diferentes valores fijos según el valor de un índice de entrada.
En otros idiomas usaría una declaración switch
o case
, pero Python no parece tener una switch
declaración. ¿Cuáles son las soluciones Python recomendadas en este escenario?
Aceptado
Python 3.10 (2021) introdujo la declaración match
-case
, que proporciona una implementación de primera clase de un "cambiador" para Python. Por ejemplo:
def f(x):
match x:
case 'a':
return 1
case 'b':
return 2
case _:
return 0 # 0 is the default case if x is not found
La declaración match
- case
es considerablemente más poderosa que este simple ejemplo.
Si necesita admitir Python ≤ 3.9, utilice un diccionario en su lugar:
def f(x):
return {
'a': 1,
'b': 2,
}[x]
Si desea valores predeterminados, puede utilizar la get(key[, default])
función de diccionario:
def f(x):
return {
'a': 1,
'b': 2
}.get(x, 9) # 9 will be returned default if x is not found