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