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

Nick Coghlan ncoghlan at gmail.com
Sat Feb 4 15:01:47 CET 2006


Martin v. Löwis wrote:
> Hmm. A function also defines *here* and *now* an operation to be carried
> out *elsewhere* and *later*.

Agreed, but when I use a lambda, I almost always have a *specific* elsewhere 
in mind (such as a sorting operation or a callback registration). With named 
functions, that isn't usually the case - I'll either be returning the function 
from a factory function or decorator (allowing the caller to do whatever they 
want with it), or I'll be storing the function in a module or class namespace 
where any code that needs to use it can retrieve it later.

Local utility functions occupy a middle ground - their usage is localised to 
one function or class definition, but they aren't necessarily defined just for 
one particular use. Using them more than once is a clear sign that they're 
worth naming, and the occasional need to name a complex single-use function 
seems a worthwhile trade-off when compared to trying to permit that complexity 
to be embedded inside an expression.

>> Generator expressions allow a generator to be embedded only if it is simple 
>> enough to be written using a single expression in the body of the loop. Lambda 
>> does the same thing for functions, but for some reason people seem to love the 
>> flexibility provided by genexps, while many think the exact same restriction 
>> in lambda is a problem that needs "fixing". Maybe once PEP 308 has been 
>> implemented, some of that griping will go away, as it will then be possible to 
>> cleanly embed conditional logic inside an expression (and hence inside a lambda).
> 
> I believe that usage of a keyword with the name of a Greek letter also
> contributes to people considering something broken.

Aye, I agree there are serious problems with the current syntax. All I'm 
trying to say above is that I don't believe the functionality itself is broken.

At last count, Guido's stated preference was to ditch the functionality 
entirely for Py3k, so unless he says something to indicate he's changed his 
mind, we'll simply need to continue with proposing functions like 
methodcaller() as workarounds for its absence...

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia
---------------------------------------------------------------
             http://www.boredomandlaziness.org


More information about the Python-Dev mailing list