Chris Perkins wrote: [snip implementation]
While I think that func(x, ...) is more readable than partial(func, x), I'm not sure that I would use either of them often enough to warrant special syntax.
Interesting. Thought it might be worth listing a few of the current places people use lambdas (and lambda replacements like operator.attrgetter/itemgetter) that this might be useful, and a few of the places where it probably wouldn't be.
Places where it might be useful:
getting attributes: lambda obj: obj.attr attrgetter('attr') getattr(__, attr)
getting attributes with defaults[1]: objs.sort(key=lambda a: getattr(a, 'lineno', 0)) objs.sort(key=getattr(__, 'lineno', 0)
Places where you might be able to use it (with some changes):
using bound methods[1][2]: map(lambda x: x.strip(), lst) map(str.strip(), lst) #!! doesn't work for unicode map(methodcaller('strip'), lst) # proposed by Alex Martelli __.strip() # note that calling strip on __ would have to # return a curryable looking for one arg...
Places where I can't see how to use it:
creating a function out of nothing[2]: button.setlabel(lambda: 'Click Me!') button.setlabel('Click Me!'.__str__) # works 'cause str returns self
adding arguments[1]: lambda x: ""
adding method to an instance[1]: self.plural = lambda n: int(n != 1)
So I guess it's a cool idea, but I don't know if it's really going to pacify anyone who is upset about losing lambda... (Not that I'm suggesting that was your intention -- but it's something that's been recently on my mind.)
Steve
[1]http://mail.python.org/pipermail/python-list/2004-December/257990.html [2]http://www.artima.com/forums/flat.jsp?forum=106&thread=98196 -- http://mail.python.org/mailman/listinfo/python-list