[Python-ideas] Tweaking closures and lexical scoping to include the function being defined
Terry Reedy
tjreedy at udel.edu
Tue Sep 27 01:57:03 CEST 2011
On 9/26/2011 6:23 PM, Eric Snow wrote:
> As Terry noted, default argument values are sort of read-only. A
> function's __defaults__ (and __kwdefaults__) is writable and bound to
> a tuple.
Oh, right, I keep forgetting that. The tuple of defaults in immutable
but in current Python, at least, the tuple is replaceable. So a function
can indirectly rewrite its defaults as long as it is still bound to its
definition name.
> The local name that maps to each value in __defaults__ is
> re-initialized for each call. The proposed nonlocal-from syntax would
> not reflect these characteristics. Instead it is more of a
> persistent/static mechanism, just like closures.
For a default that is intended to be permanent and never overshadowed,
there is no need to rebind with every call.
--
Terry Jan Reedy
More information about the Python-ideas
mailing list