Está en la página 1de 7

Inicio Libros Tutoriales Eventos Foro Buscar

Libros / Python para principiantes / Captulo 4. Funciones definidas por el usuario


/ 4.2. Llamadas de retorno

4.2. Llamadas de retorno


En Python, es posible (al igual que en la gran mayora de los lenguajes de
programacin), llamar a una funcin dentro de otra, de forma fija y de la misma manera
que se la llamara, desde fuera de dicha funcin:

def funcion():
return "Hola Mundo"

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
def saludar(nombre, mensaje='Hola'):
print mensaje, nombre
print mi_funcion()

Sin embargo, es posible que se desee realizar dicha llamada, de manera dinmica, es
decir, desconociendo el nombre de la funcin a la que se desear llamar. A este tipo
de acciones, se las denomina llamadas de retorno.

Para conseguir llamar a una funcin de manera dinmica, Python dispone de dos
funciones nativas: locals() y globals() .

Ambas funciones, retornan un diccionario. En el caso de locals() , ste diccionario se


compone -justamente- de todos los elementos de mbito local, mientras que el de
globals() , retorna lo propio pero a nivel global.

def funcion():
return "Hola Mundo"

def llamada_de_retorno(func=""):
"""Llamada de retorno a nivel global"""
return globals()[func]()

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
print llamada_de_retorno("funcion")

# Llamada de retorno a nivel local


nombre_de_la_funcion = "funcion"
print locals()[nombre_de_la_funcion]()

Si se tienen que pasar argumentos en una llamada retorno, se lo puede hacer


normalmente:

def funcion(nombre):
return "Hola " + nombre

def llamada_de_retorno(func=""):
"""Llamada de retorno a nivel global"""
return globals()[func]("Laura")

print llamada_de_retorno("funcion")

# Llamada de retorno a nivel local


nombre_de_la_funcion = "funcion"
print locals()[nombre_de_la_funcion]("Facundo")

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
4.2.1. Saber si una funcin existe y puede ser llamada
Durante una llamada de retorno, el nombre de la funcin, puede no ser el indicado.
Entonces, siempre que se deba realizar una llamada de retorno, es necesario comprobar
que sta exista y pueda ser llamada.

if nombre_de_la_funcion in locals():
if callable(locals()[nombre_de_la_funcion]):
print locals()[nombre_de_la_funcion]("Emilse")

El operador in , nos permitir conocer si un elemento se encuentra dentro de una


coleccin, mientras que la funcin callable() nos dejar saber si esa funcin puede
ser llamada.

def funcion(nombre):
return "Hola " + nombre

def llamada_de_retorno(func=""):
if func in globals():
if callable(globals()[func]):
return globals()[func]("Laura")
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
else:
return "Funcin no encontrada"

print llamada_de_retorno("funcion")

nombre_de_la_funcion = "funcion"

if nombre_de_la_funcion in locals():
if callable(locals()[nombre_de_la_funcion]):
print locals()[nombre_de_la_funcion]("Facundo")
else:
print "Funcin no encontrada"

Anterior Siguiente
4.1. Definiendo funciones 4.3. Llamadas recursivas

Copyright (c) 2011-2013 Eugenia Bahit. La copia y redistribucin de esta pgina se permite bajo los trminos de
la licencia Creative Commons Atribucin NoComercial SinDerivadas 3.0 Unported siempre que se conserve esta
nota de copyright.
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
INDICE DE CONTENIDOS

1. Preparacin del entorno de desarrollo

2. Estructura y elementos del lenguaje

3. Mdulos, paquetes y namespaces

Captulo 4. Funciones definidas por el usuario

4.1. Definiendo funciones

4.2. Llamadas de retorno

4.3. Llamadas recursivas

4.4. Sobre la finalidad de las funciones

5. Introduccin a la orientacin a objetos

6. Mtodos principales del objeto String

7. Mtodos principales del objeto list

8. Mtodos principales del objeto dict

9. El objeto File: trabajando con archivos

10. Un paseo por los mdulos de la librera estndar

11. Introduccin a MySQL y el lenguaje SQL

12. Bases de datos en Python con MySQL

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
13. Corriendo aplicaciones Python en la web

14. Enviando e-mails con formato HTML desde Python

3.757
2006-2017 LibrosWeb.es Contacto Novedades Condiciones Privacidad

das online

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com