james_027 wrote:

> 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
> check_login('msg')
> my_func('toto', 'tata')

A decorator can alter the function _in place_ - it is not neccessary to
alter code that calls my_func, as your example does. 

As an additional benefit, it separates concerns - my_func does some stuff,
but mixing it with login-related logic is cumbersome:

def my_func(parameters):
    if not logged_in():
       do some redirection
    do_the_real_work()

is much more error-prone than

@check_login
def my_func(parameters):
   do_the_real_work()

because then you can just skim the decorator and concentrate on the actual
code.

What one often reaches with decorators is something referred to as "aspect
orientied programming". 

Diez
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to