[Python-Dev] Re: "groupby" iterator

Nick Coghlan ncoghlan at iinet.net.au
Wed Dec 3 06:48:49 EST 2003


Raymond Hettinger wrote:
> Carried to the limit, the idea turns into something that is
> either sublime or severely bonkers.  The good points are that
> Guido gets his dotted access and I get to trade in the two ugly
> names and for a single beautiful "extract".  And there's no performance
> cost, the inner loop is the same.  The downside is I still don't
> know how to explain it (AFAICT, super() is the closest thing to it):

What you end up with is still a unary operator, so it could still live 
in the operator module, to.

And I think what you posted would work for strings as dictionary keys, 
too - answering another of the objections to the original operator.extract

Which leaves figuring out a concise explanation for what the hell it 
does (without using lambda in the examples, since I assume part of the 
aim here is to avoid explaining lambda to people who don't need it). . .

"operator.extract provides an interim target for an attribute or item 
access where the real target of the access is to be determined later. 
The access is made normally (i.e. dotted notation or indexing), with 
'operator.extract' substituted where the target would normally be 
written. The actual access is carried out by calling the result returned 
by the expression operator.extract is part of with the real target as 
the first argument.

E.g.
   y = operator.extract.foo
is equivalent to
   def y(x):
     return x.foo

   y = operator.extract[2]
is equivalent to
   def y(x):
     return x[2]
"

If you meant a concise explanation of _how_ it does what it does, then 
I'm not sure that can be done :)

And I still don't know if I should be admiring this or running away 
screaming!

Cheers,
Nick.





More information about the Python-Dev mailing list