Peter Hansen wrote:
> Paolino wrote:
> 
>>[EMAIL PROTECTED] wrote:
>>def enclosing():
>>  var=[]
>>  var[0]=2
>>  def enclosed():
>>    var[0]=4
>>which is like saying python is not working
>>
>>It's ok to mark non locals,but why var=4 is not searched outside and 
>>var[0]=4 yes?
> 
> 
> Because "var=4" rebinds the name "var", while "var[0]=4" does not.  It's 
> exactly the same issue with using "global", where you don't need it if 
> you aren't rebinding the name.
> 
> (Those who don't understand the difference between "rebinding a name" 
> and "modifying an object" will need to figure out that distinction 
> before they can participate much in a discussion about Python scopes, I 
> think.)

The point is not to understand obvious technical things, but having a 
coherent programming framework.If I can modify an out of scope object 
(ie var list) without saying it's an 'outer' no problem as python looks 
for it, in fact I should put 'outer' to rebind var to 4 if I refer to 
'var' as an outer binding, python can find it if it exists, if it 
doesn't it can raise an error.

Many other ways to identify the scope layer of a binding can be thought 
about:having only 'global' and pretending that is the only useful 
namspace layer to be identify for changing its bindings is just a piece 
  of sense.

Paolino

        

        
                
___________________________________ 
Yahoo! Mail: gratis 1GB per i messaggi e allegati da 10MB 
http://mail.yahoo.it
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to