¿Reemplazos para la declaración de cambio en Python?

Resuelto Michael Schneider asked hace 16 años • 44 respuestas

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 switcho case, pero Python no parece tener una switchdeclaración. ¿Cuáles son las soluciones Python recomendadas en este escenario?

Michael Schneider avatar Sep 13 '08 07:09 Michael Schneider
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- casees 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]
Greg Hewgill avatar Sep 13 '2008 00:09 Greg Hewgill

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
Nick avatar Sep 19 '2008 15:09 Nick