Necesito saber el número de llamadas a una cierta función

Pepe Aracil pepe en diselpro.com
Mar Nov 29 10:14:27 CET 2005


Faltarian los **kargs en el la funcion wrapper ¿No?

Saludos.



Chema Cortes wrote:
> Carlos Mestre escribió:
> 
>>Perdon, no sé a lo que te refieres, yo quería otra cosa. ejemplo,
>>definir la función factorial en lisp, y utilizando el comando trace
>>(trace factorial), luego cuando hago esto:
>>Break 3 [6]> (factorial 6)
>>1. Trace: (FACTORIAL '6)
>>2. Trace: (FACTORIAL '5)
>>3. Trace: (FACTORIAL '4)
>>4. Trace: (FACTORIAL '3)
>>5. Trace: (FACTORIAL '2)
>>6. Trace: (FACTORIAL '1)
>>7. Trace: (FACTORIAL '0)
>>7. Trace: FACTORIAL ==> 1
>>6. Trace: FACTORIAL ==> 1
>>5. Trace: FACTORIAL ==> 2
>>4. Trace: FACTORIAL ==> 6
>>3. Trace: FACTORIAL ==> 24
>>2. Trace: FACTORIAL ==> 120
>>1. Trace: FACTORIAL ==> 720
>>
>>no sé si se me entiende :-/
> 
> 
> Como te sugiere Erny en otro mensaje, se puede utilizar el módulo
> 'profile' para estas cosas.
> 
> Es lo primero que se había ocurrido; pero pensando veo que también se
> puede hacer muy simple con "decoradores":
> 
> 
> #Decorador genérico para traceos
> def mytrace(f):
>     def wr_f(*args):
>         s=','.join([str(item) for item in args])
>         print "--> %s(%s)"% (f.__name__,s)
>         res=f(*args)
>         print "%s(%s) ==> %s"%(f.__name__,s,str(res))
>         return res
>     return wr_f
> 
> @mytrace
> def fact(n):
>     if n==0:
>         return 1
>     else:
>         return n*fact(n-1)
> 
> print fact(3,2)
> 
> 
> 
> El decorador 'mytrace' se puede aplicar delante de cada función que
> quieras tracear.
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es




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