variable in Python

Salvatore artyprog at wanadoo.fr
Thu Apr 17 08:36:54 EDT 2003


Steve Holden wrote:
> "Salvatore" <artyprog at wanadoo.fr> wrote ...
> 
>>Hello,
>>
>>I have a little doubt concerning variables.
>>When one declare x = 3
>>does x contains the value 3 or
>>does x acts like pointer in C ?
>>
> 
> 
> Salvatore:
> 
> All Python variables are references to the data values that have been
> assigned to them - as are list and dictionary elements. This can lead to
> surprises for beginners, who don't understand why
> 
> 
>>>>lst1 = [1, 2, 3]
>>>>lst2 = lst1
>>>>lst2[2] = "bam!"
> 
> 
> leads to the lst1 variable showing the value [1, 2, "bam!"]. The answer, of
> course, is that the third assignment changes the last element of the list
> that is referred to by both variables, lst1 and lst2.
> 
> Many Python authors prefer to talk about "binding" nowadays, since
> "assignment" implies to users of other languages that a value is being
> placed into the variable. In Python, however, this isn't the case. Data
> values are created in memory allocated from a heap, and this memory is only
> reclaimed when no references to the data vablue remain. Once the data value
> is created, variables reference it.
> 
> In  the CPython implementation each reference to a value increments its
> reference count, and deletion of a reference decrements that count. Certain
> "cyclic" structures, being self-referential, would never be reclaimed, and
> so recent versions of CPython have a garbage collection algorithm that can
> detect otherwise-unreferenced cyclic structures.
> 
> The JPython implementation, which compiles Python into Java bytecodes, does
> not use reference counting at all and relies on Java's garbage colection
> scheme to reclaim unused memory.
> 
> regards
> --
> Steve Holden                                  http://www.holdenweb.com/
> How lucky am I?      http://www.google.com/search?q=Steve+Holden&btnI=1
> Python Web Programming                 http://pydish.holdenweb.com/pwp/
> 
> 
> 
> 
That's what i call 'a real response' ;-)

Thank you Steve





More information about the Python-list mailing list