[Python-Dev] any support for a methodcaller HOF?

Giovanni Bajo rasky at develer.com
Fri Feb 3 15:47:05 CET 2006


Nick Coghlan <ncoghlan at gmail.com> wrote:

> Consider these comparisons:
>
>    itemgetter(1)     <=> (x[1] def (x))
>    attrgetter('foo') <=> (x.foo def (x))
>    partial(y, arg)   <=> (y(arg) def)
>
> So rather than yet another workaround for lambda being ugly, I'd rather
see
> a PEP that proposed "Let's make the syntax for deferring an expression not
> be ugly anymore, now that we have generator expressions and conditionals
as
> an example of how to do it right".

+1000. Instead of keep on adding arcane functions which return objects which
(when called) do things not obvious if not by knowing the function
beforehand, a generic syntax should be added for deferred execution. I too
use itemgetter and friends but the "correct" way of doing a defferred "x[1]"
*should* let you write "x[1]" in the code. This is my main opposition to
partial/itemgetter/attrgetter/methodcaller: they allow deferred execution
using a syntax which is not equivalent to that of immediate execution.
Unless we propose to deprecate "x[1]" in favor of "itemgetter(1)(x)"...
-- 
Giovanni Bajo



More information about the Python-Dev mailing list