[Python-ideas] binding vs rebinding

Bruce Frederiksen dangyogi at gmail.com
Thu Feb 5 15:59:45 CET 2009


spir wrote:
> It seems that if ever the second step would not hold, then there would be no reason for such declarations. Imagine that rebinbing is spellt using ':='. Then, from a non-glocal scope:
> * a=1 causes creation of a local name
> * a:=1 rebinds a local name if exists, or rebinds an external name if exists (step-by-step up to module level scope), or else launches NameError.
> There may be reasons why such a behaviour is not the best a programmer would expect: I wait for your comments.
>   
I like the idea.

On the global/nonlocal thing, it would be possible that a nested 
function does a:=l and there is both a nonlocal "a" and a global "a".  
The current global/nonlocal mechanism allows the programmer to 
disambiguate this case.  But it is hard to imagine use cases where this 
couldn't be resolved by renaming one of the "a" variables.  And the same 
problem occurs in the current mechanism where a function nested 2 levels 
down has two nonlocal "a" variables: in its direct parent, and in its 
grandparent.

-bruce



More information about the Python-ideas mailing list