python列表是存储对象还是对象的引用?

Jam*_*pam 12 python list

整数的大小是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
>>>
Run Code Online (Sandbox Code Playgroud)

Ste*_*ehl 12

Python中的所有值都是装箱的,它们不会映射到机器类型或大小.即CPython实现中的所有内容都是一个PyObject结构.

http://docs.python.org/2/c-api/structures.html#PyObject

所以,现在我徘徊列表是持有对象的引用而对象是存储在内存中的某个地方.

列表也是一个PyObject,它包含对列表元素的其他PyObject 的一系列引用.该列表分配在由Python垃圾收集器管理的Python堆上.