[Edu-sig] RE: Integration correction
urnerk at qwest.net
Wed Mar 30 01:19:51 CEST 2005
> From: Kirby Urner <urnerk at qwest.net>
> > @simpson
> > def g(x): return x*x
> > >>> g(0, 3)
> > 9.0000000000000036
> My resistance to decorators is not unrelated to the fact that I don't seem
> capable of getting my mind around them.
Hi Art --
Actually, I'm with you. The above use is maybe more an example of how *not*
to use them. I mean, the function g has a perfect right to exist with its
own name, but here gets rebound to another function with its own arguments.
The original g is gone, unless we kept a copy.
The syntax is equivalent too:
g = simpson(g)
nothing more. But then simpson, which consumes g, also spits back defint
(i.e. is a factory for producing functions), which defint here gets rebound
to g, committing g to oblivion.
Again, I think you're probably right, that this particular example is
perverse. Edu-sig is a scratch pad for bad ideas too. :-D
The main reason Guido wanted them was to put something critical about a
function at the very top, not after a page of code. But here, my g is a one
liner. It makes more sense to just write:
def g(x): return x*x
intg = simpson(g)
dg = derivative(g)
That'd keep g around, and give us these new other functions to play with too
(I *do* think that taking a function as an argument and spitting one back
*is* "the right thing" to do in this context i.e. is mathematically on
target -- but decorators?... no, probably not).
Now, if g(x) really *did* go on for 30-40 lines, OK, then maybe a decorator
adds to readability.
Something to think about.
More information about the Edu-sig