[Python-es] "decorator" que escriba un mensaje a la entrada y a la salida de una funcion

Ricardo Cárdenes Medina ricardo.cardenes en gmail.com
Vie Jul 8 18:06:24 CEST 2011


2011/7/8 Jose Caballero <jcaballero.hep en gmail.com>
>
> Hola,
>
> existe alguna manera de hacer un decorator que muestre a la entrada de una funcion/metodo, imprimiendo el nombre de la funcion y los argumentos, y que muestre otro mensaje a la salida con el valor retornado?
> Lo primero lo se hacer, pero tengo la sensacion de que lo segundo no es posible, o no tan facil.

Si ya tienes hecho lo de imprimir nombre y argumentos, éste lo único
que hace es capturar la salida e imprimirla:

def logger(fn):
   def wrapper(*args, **kw):
       ret = fn(*args, **kw)
       print ret
       return ret
   return wrapper


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