A replacement for lambda
Paul Rubin
http
Sat Jul 30 08:40:08 CEST 2005
James Richards <rootrot at govtabuse.com> writes:
> Personally, I can't recall any decent programmer I know who objects
> to actually writing out a variable name. In fact, I don't know a
> single "real" programmer (this is one who writes programs he intends
> to look at again in, say, 3 weeks) who doesn't insist on writing
> "real" variable names.
The issue is whether you want to name every intermediate result in
every expression.
sum = a + b + c + d + e
is a lot nicer than
x1 = a + b
x2 = c + d
x3 = x1 + e
sum = x2 + x3
the language has nicely kept all those intermediate results anonymous.
Python has first-class functions, which, like recursion, is a powerful
idea that takes some getting used to. They let you say things like
def derivative(f, t, h=.00001): # evaluate f'(t) numerically
return (f(t+h) - f(t)) / h
dy_dt = derivative(cos, 0.3) # approx. -sin(0.3)
With anonymous functions, you can also say:
dy_dt = derivative(lambda x: sin(x)+cos(x), 0.3) # approx. cos(.3)-sin(.3)
Most Python users have experience with recursion before they start
using Python, so they don't see a need for extra keywords to express
it. Those not used to first-class functions (and maybe some others)
seem to prefer extra baggage. For many of those used to writing in
the above style, though, there's nothing confusing about using a
lambda there instead of spewing extra verbiage to store that
(lambda x: sin(x)+cos(x)) function in a named variable before
passing it to another function.
More information about the Python-list
mailing list