Llamar una funcion desde variable

Andres Moya Andres.Moya en hispalinux.es
Mie Dic 22 13:16:48 CET 2004


Oscar Merchan wrote:

>Buenas a todos.
>
>Ya se que lo voy a preguntar es un poco raro, y ni tan siquiera se si ahi alguna forma de hacerlo.
>  
>
En otros lenguajes sí es raro, pero en python es de lo más normal.

>Bueno haya va, quisiera poder ejecutar una funcion a raiz del valor de una variable, me esplico con un ejemplo .-
>
>	def imprime():   <-- Fundion
>	    print 'chorrada' 
>
>	prueba = 'imprime'  <-- Variable, cuyo valor es el mismo nombre que la funcion
>
>	prueba()  <-- Ya se que esto no funciona pero es para que veais lo que pretendo
>  
>
En python una función es un objeto como otro cualquiera, y puede ser 
asignada a una variable y luego llamada:

  def imprime():
      print 'chorrada'

  prueba = imprime
  prueba()

Si lo que quieres es acceder a la función a partir de un string con su 
nombre, puedes buscarla en el diccionario globals(), si es global o ha 
sido importada con un "from xxx import":

  prueba = globals()["imprime"]
  prueba()

También se puede encontrar de otras maneras.

-- 
Andres.Moya en hispalinux.es




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