What other languages use the same data model as Python?
Terry Reedy
tjreedy at udel.edu
Sun May 1 21:42:45 EDT 2011
On 5/1/2011 6:33 PM, Gregory Ewing wrote:
> Steven D'Aprano wrote:
>
>> Python uses a data model of "name binding" and "call by object" (also
>> known as "call by sharing").
>
> It can be summed up in a less jargony way by saying that all
> data is stored in heap-allocated objects,
This is incomprehensible jargon to some; is only (partly) true of
(typical) machine-implementations; and seems not to be true of all
objects. I believe that for CPython, builtin objects, including the
fixed arrray of ints from -5 to 256, are allocated in another data
segment (more CS jargon, which is irrelavant to human interpreters).
Evidence 1:
>>> id(int)
505285072
>>> id(str)
505233232
>>> id(1)
505493792
>>> id(-5)
505493696
This appears to be initialized data segment. (Someone else could take a
white box approach and look at the source. ;-)
>>> id(333333)
16512288
>>> id('a')
11227616
This is heap.
Evidence 2:
Some error messages use 'heap type' to mean 'Python-coded class'
>>> 1 .__class__ = str
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
1 .__class__ = str
TypeError: __class__ assignment: only for heap types
http://bugs.python.org/issue4600
> and variables refer to objects rather than containing them directly.
> Everything else follows from that.
Would you say 'names refer to objects rather than containing them
directly'? Surely not. Using 'name' rather than the hugely overloaded
tern 'variable' automatically avoids certain misunderstandings.
A good summary might be "Python manipulates objects that are accessed
through literals, names, and expressions."
--
Terry Jan Reedy
More information about the Python-list
mailing list