Variable Scope 2 -- Thanks for 1.

Duncan Booth me at privacy.net
Sat Jan 10 07:14:35 EST 2004


JCM <joshway_without_spam at myway.com> wrote in
news:btn6ks$ada$1 at fred.mathworks.com: 

> Irmen de Jong <irmen at -nospam-removethis-xs4all.nl> wrote:
> ...
>> A very important concept with Python is that you don't have variable 
>> assignment, but name binding. An "assignment statement" binds a name
>> on an object, and the object can be of any type. A statement like
>> this: 
> 
>> age = 29
> 
>> doesn't assign the value 29 to the variable age. Rather, it labels
>> the integer object 29 with the name age.
> 
> I think this statement is misleading--it seems to imply the integer
> object is altered somehow.  Personally I see no problem with saying
> the value 29 is assigned to the variable age, so long as you
> understand the semantics.
> 

Be careful. The integer object is actually altered, at least in so far as 
its reference count (which is part of the object) is changed:

>>> import sys
>>> sys.getrefcount(29)
11
>>> age = 29
>>> sys.getrefcount(29)
12
>>> 

-- 
Duncan Booth                      duncan.booth at suttoncourtenay.org.uk
int month(char *p){return(124864/((p[0]+p[1]-p[2]&0x1f)+1)%12)["\5\x8\3"
"\6\7\xb\1\x9\xa\2\0\4"];} // Who said my code was obscure?



More information about the Python-list mailing list