vsoler
3/27/2010 4:25:00 PM
On 27 mar, 17:21, vsoler <vicente.so...@gmail.com> wrote:
> On 27 mar, 17:06, Patrick Maupin <pmau...@gmail.com> wrote:
>
>
>
> > On Mar 27, 10:24 am, vsoler <vicente.so...@gmail.com> wrote:
>
> > > Hi,
>
> > > Still learning Python, now decorators.
>
> > > Before diving deeply into decorators, I'd like to apply a function to
> > > another function.
>
> > > My "extremely simple function" should print number 3, then the sum of
> > > its 2 arguments.
>
> > > Say that I call f(5,7)
> > > I'd like to get, somehow, 3 then 12.
>
> > > I've tried the following:
>
> > > def d(f):
> > > print 3
> > > return f
>
> > > def f(a, b):
> > > print a+b
>
> > > f=d(f)
>
> > > However, it does not work. Calling f(5,7) only returns 12, (3 is
> > > missing)
> > > How should I proceed?
> > >>> def d(f):
>
> > ... def wrapper(*args):
> > ... print 3
> > ... return f(*args)
> > ... return wrapper
> > ...>>> def f(a, b):
>
> > ... print a + b
> > ...>>> f = d(f)
> > >>> f(5, 7)
>
> > 3
> > 12
>
> > HTH,
> > Pat
>
> Pat,
>
> I think some lines are missing. I don't see "d" function defined. Any
> lines above def wrapper?
>
> Thank you
Patrick,
I see what happened. The first line was somehow hidden.
Thank you very much.
Vicente Soler