示例
123456789 | >>> a = ()>>> b = ()>>> id(a) == id(b)True >>> a = (1, )>>> b = (1, )>>> id(a) == id(b)False |
源码位置 Include/tupleobject.h |
Objects/tupleobject.c
结构
定义
12345 | typedef struct { PyObject_VAR_HEAD PyObject *ob_item[1]; } PyTupleObject; |
说明
12345678 | 1. PyObject_VAR_HEADPyTupleObject在底层是个变长对象(需要存储列表元素个数).虽然, 在python中, tuple是不可变对象 2. PyObject *ob_item[1];指向存储元素的数组 3. |
结构
构造方法
1 | PyAPI_FUNC(PyObject *) PyTuple_New(Py_ssize_t size); |
构造
看下构造方法定义
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | PyObject *PyTuple_New(register Py_ssize_t size){ register PyTupleObject *op; Py_ssize_t i; // 大小为负数, return if (size 0) { PyErr_BadInternalCall(); return NULL; } // 如果大小=0, 空元组, 直接取free_list第一个返回#if PyTuple_MAXSAVESIZE > 0 if (size == 0 & free_list[0]) {yon-font-monaco crayon-os-pc print-yes notranslate\” data-settings=\” minimize scroll-always\” style=\” margin-top: 12px; margin-bottom: 12px; font-size: 13px !important; line-height: 15px !important;\”>
源码位置 Include/tupleobject.h | 结构定义
说明
结构 构造方法
构造看下构造方法定义
|