select case

Rafael Villar Burke pachi en mmn-arquitectos.com
Jue Abr 21 18:08:44 CEST 2005


Marcos Sánchez Provencio wrote:

>Normalmente, en Python no hace falta hacer select case (quiero decir que
>hay mejores maneras de hacer las cosas). Pero si estás convirtiendo
>código:
>
>http://vb2py.sourceforge.net/docs/select.html
>
>    _select5 = Value
>    if (_select5 == 1):
>        DoOne()
>    elif (_select5 == 2):
>        DoTwo()
>    elif (_select5 == 3) or (_select5 == 4):
>        DoThreeOrFour()
>    elif (5 <= _select5 <= 10):
>        DoFiveToTen()
>    else:
>        DoElse()
>  
>
Esto funciona, pero tiene un estilo un poco C. Si se puede es mejor 
comprobar la identidad (con is) y no la igualdad de valores, puesto que 
es más rápido comparar dos direcciones de memoria que usar una función 
de comparación (que no siempre son enteros o comparaciones evidentes). 
Además, es más legible así:

if (_select5 is 1):
        DoOne()
elif (_select5 is 2):
        DoTwo()
elif (_select5 is 3) or (_select5 is 4):
        DoThreeOrFour()
elif (5 <= _select5 <= 10):
        DoFiveToTen()
else:
        DoElse()

Si tienes un número de valores cerrado una opción seguramente más rápida 
y que te vale para cualquier tipo de datos es usar un diccionario para 
hacer dispatching. Por ejemplo:

que_hago_con_este_valor = {1:DoOne, 2:DoTwo, 3:DoThree}
este_mismo = el_valor_que_me_das
dame_argo = que_hago_con_este_valor[este_mismo]()

Un saludo,

Pachi
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


Más información sobre la lista de distribución Python-es