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