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