squared functions--most Pythonic way?
Aahz
aahz at pythoncraft.com
Fri Jun 28 19:11:55 EDT 2002
In article <ballabio-E54F22.21380327062002 at newssrv.fastweb.it>,
Luigi Ballabio <ballabio at mac.com> wrote:
>
> suppose we want to define a function which, given f(x), returns
>its square. There are a number of ways which come to mind, such as:
>
>object-oriented programming:
>
> def fsquare:
> def __init__(self,f):
> self.f = f
> def __call__(self,x):
> return self.f(x)**2
>
>functional programming:
>
> # with an internal named function
> def fsquare(f):
> def f2(x):
> return f(x)**2
> return f2
I'm sensing an ill-defined spec here. To me, your English sentence
implies that what's wanted is
def fsquare(f, x):
return f(x)**2
but both of your examples define closures of some sort.
Assuming that your code does what you really want, I don't think either
of these two is "more Pythonic"; it depends on your circumstances and
who your likely code readers are going to be. I don't have much
functional experience, so the OO mechanism works better for me
(particularly given that it works back to 1.5.2).
--
Aahz (aahz at pythoncraft.com) <*> http://www.pythoncraft.com/
Project Vote Smart: http://www.vote-smart.org/
More information about the Python-list
mailing list