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

Reply via email to