domingo, mayo 13, 2007

Decoradores en Python

Es una interesante característica que incluye Python 2.4 en adelante.
Veamos un pequeño ejemplo:

#! /usr/bin/python

import time

def decorador(funcion):
def nueva(*lista_args):
tiempo1 = time.time()
valor = funcion(*lista_args)
tiempo2 = time.time()
delta = tiempo2 - tiempo1

print "La funcion '%s()' tardo en ejecutarse %s segundos" % (funcion.func_name, delta)
return valor
return nueva

@decorador
def func(a, b):
return a - b

func(2, 3)

Como resultado produce:

[nahuel@valhalla workspace]$ python deco.py
La funcion 'func()' tardo en ejecutarse 4.05311584473e-06 segundos

Hay mucho más en Charming Python: Decorators make magic easy (en inglés)

No hay comentarios.: