decorators tutorials

james_027 cai.haibin at
Mon Jul 23 14:04:42 CEST 2007

hi bruno,

That seems to be hard to read at all, or I am just very new to python?

With that decorator how do I take advantage of it compare when I just
write a function that could do the same as what the decorator did? I
could translate the could from above into ...

def check_login(msg):
def my_func(toto, tata):

#call it like this
my_func('toto', 'tata')

On Jul 23, 6:26 pm, Bruno Desthuilliers <bruno.
42.desthuilli... at> wrote:
> james_027 a écrit :
> > Hi all,
> > I am having difficulty understanding decorator. The definition was
> > clear for me, but the syntax is not so clear to me.
> > will decorators will always have to be in this way
> > def check_login(func):
> >     def _check_login(*args):
> >         print "I am decorator"
> >         return func(*args)
> >     return _check_login
> Sort of... Well, depends...
> Basically, a decorator is a callable taking a callable as argument and
> returning a callable. These callable are usually *but* not necessarily
> functions. You may want to read the section about the special method
> __call__ in the  Fine Manual.
> Also, you may want to write a 'parameterized' decorator - a decorator
> taking arguments. In this case, you need one more wrapping level:
> def check_login(msg):
>    def check_login_deco(func):
>      def _check_login(*args, **kw):
>        print msg
>        return func(*args, **kw)
>      return _check_login
>    return check_login_deco
> @check_login("I am the decorator")
> def my_func(toto, tata):
>    print toto, tata

More information about the Python-list mailing list