¿Cuál es una alternativa a las declaraciones if / elif en Python?

Mi código actualmente se ve algo como esto:

if option1: ... elif option2: ... elif option3: .... 

etc., etc. Y aunque no estoy disgustado con eso, me preguntaba si había una mejor alternativa en Python. Mi script es un script basado en consola donde estoy usando argparser para buscar lo que el usuario necesita.

Si la ‘opción’ puede contener ‘uno’, ‘dos’ o ‘tres’, podría hacer

 def handle_one(): do_stuff def handle_two(): do_stuff def handle_three(): do_stuff {'one': handle_one, 'two': handle_two, 'three': handle_three}[option]() 

Supongo que estás empezando a usar Python con un fondo en otro lugar, donde una statement de switch resolvería tu pregunta. Como esa no es una opción en Python, estás buscando otra forma de hacer las cosas.

Sin embargo, sin contexto, realmente no se puede responder muy bien a esta pregunta (hay demasiadas opciones).

Voy a lanzar en una alternativa (algo pythonica):

Empecemos con un ejemplo de donde creo que vienes.

 def add_to_x (x): if x == 3: x += 2 elif x == 4: x += 4 elif x == 5: x += 5 return x 

Aquí está mi alternativa:

 def add_to_x (x): vals = { 3 : 5 , 4 : 8 , 5 : 10 } return vals[x] 

También puede buscar las lambdas que puede colocar en la estructura del diccionario que usé .

Pero nuevamente, como se dijo, sin contexto, esto puede no ser lo que estás buscando.

Esto es lo primero que me viene a la mente:

En lugar de hacer esto:

 if option1: a = 1 elif oprtion2: a = 2 elif oprtion3: a = 3 else: a = 0 

Puedes hacerlo:

 a = 1 if option1 else 2 if option 2 else 3 if option3 else 0 

Para más detalles, vea: PEP 308: Expresiones condicionales !