[Python-ideas] Access to function objects
Terry Reedy
tjreedy at udel.edu
Mon Aug 8 00:01:23 CEST 2011
On 8/7/2011 8:10 AM, Guido van Rossum wrote:
>>> For most uses, standard recursion via the name is good enough, it's only a
>>> few corner cases where self-reflection (as I call it) is needed.
>
> Right. If it were expected that people would start writing recursive
> calls using __function__ routinely, in situations where a name
> reference works, I'd be very unhappy with the new feature.
I am willing to separate the recursion and attribute access use cases
and not advocate that. I agree that
def fact(n): # requires int n >= 0
return n*__function__(n-1) if n else 1
is less readable than fact(n-1)
> (And if
> someone wants to make the argument that recursive calls using
> __function__ are actually better in some way I am willing to
> filibuster.)
Such calls would be slightly faster by avoiding a name lookup, but
avoiding *any* function call by using iteration should be faster yet.
For linear recursion (at most one call per call), this is usually trivial.
In my book, I am stipulating that namespace manipulations that change
the recursiveness of a function as written are 'forbidden' for the
purpose of interpreting the code presented. This should be assumed or
stated in other similar contexts.
This restricts the recursion use case to multiple recursion (possibly
multiple calls per call) in production library code that is not easily
converted to iteration, is not intended to be read by anyone other than
maintainers, and that might or even is expected to be used in an adverse
environment.
--
Terry Jan Reedy
More information about the Python-ideas
mailing list