lamadas dinamicas a funciones
Arnau Sanchez
arnau en ehas.org
Mar Nov 28 06:29:27 CET 2006
NeCuDeCo escribió:
> Holas a todos estoy necesitando hacer unas extravagancias y queria
> saber si
> habia alguna manera de llamar a las funciones como con los punteros a
> funciones de c.
Nada más sencillo, dado que en Python "todo son variables":
def fun1(x):
return x
def fun2(x):
return 2*x
fun = fun2
print fun(10)
> 20
¿A esto te refieres?
A partir de python 2.5 puedes incluso definir "punteros" a funciones
parciales. Un compañero de la lista lo explica muy bien aquí:
http://elornitorrincoenmascarado.blogspot.com/2006/08/python-25-funciones-parciales.html
....
Pero muchas veces lo que realmente necesitas es llamar a una función u
otra según una condición; en estos casos se suele usar un diccionario:
d = {"1": funcion1, "2": funcion2, "3": funcion3}
d[clave](parametros)
más sobre este tema:
http://www.python.org/infogami-faq/general/why-isn-t-there-a-switch-or-case-statement-in-python/
Y una interesante discusión en un blog:
http://simon.incutio.com/archive/2004/05/07/switch
Casi todas las soluciones que proponen son buenas, cuál sea la mejor
depende del contexto.
arnau
Más información sobre la lista de distribución Python-es