大小 整数是24个字节 和 char的大小是38个字节, 但是当我插入列表时,列表的大小并不反映我插入的对象的确切大小。所以,现在我在漫游列表中持有对象的引用,并且对象存储在内存中的某处。
>>> sys.getsizeof(1)
24
>>> sys.getsizeof('a')
38
>>> sys.getsizeof([])
72
>>> sys.getsizeof([1])
80
>>> sys.getsizeof(['a'])
80
>>> sys.getsizeof('james')
42
>>>
Python中的所有值都是装箱的,它们不会映射到机器类型或大小。即CPython实现中的所有内容都是一个 PyObject
结构。
http://docs.python.org/2/c-api/structures.html#PyObject
所以,现在我在漫游列表中持有对象的引用,并且对象存储在内存中的某处。
列表也是包含a的PyObject 序列 对列表元素的其他PyObjects的引用。该列表分配在由Python垃圾收集器管理的Python堆上。
python中的所有内容都存储为引用。所以你的假设是正确的。
>>> id(1)
10274744
>>> a = [1]
>>> id(a)
11037512
>>> id(a[0])
10274744
>>> sys.getsizeof(1)
24
>>> sys.getsizeof(a)
80
您会看到a [0]指向id /地址1.这表示只有对象的引用存储在列表中。