Skip to main content
 首页 » 编程设计

python之cpython的列表类型的实现在哪里

2025年05月04日19zhengyun_ustc

我想知道 python 列表类型的 __setitem__ 和 __getitem__ 代码是在哪里定义的。我知道列表是用C实现的,但是我找不到实现列表索引和切片操作的代码。

请您参考如下方法:

您会在 listobject.c file 中找到所有内容.

list_methods() structure 中列举了它的方法.您可能还想研究 PyList_Type structure进一步指向各种 Hook 的实现。

因为 __getitem__ 和 __setitem__ 都是 C sequence protocol 的一部分, PyList_Type 结构指向一个新结构 list_as_sequence定义那些钩子(Hook),在 PyList_Type 的 tp_as_sequence 插槽中列出。

list_item function实现 __getitem__ 钩子(Hook),__setitem__ 由 list_ass_item 表示.

另一方面,切片由映射协议(protocol)处理,您最终(通过 list_as_mapping )位于 list_subscript和 list_ass_subscript .