[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