【问题标题】:Where is the implementation of cpython's list type?cpython的list类型的实现在哪里?
【发布时间】:2012-10-14 18:33:29
【问题描述】:

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

【问题讨论】:

    标签: python list cpython


    【解决方案1】:

    您可以在listobject.c file 中找到所有内容。

    它的方法在list_methods() structure 中列举。您可能还想研究PyList_Type structure 以获得更多关于各种钩子实现的指针。

    由于__getitem____setitem__ 都是C sequence protocol 的一部分,因此PyList_Type 结构指向定义这些挂钩的新结构list_as_sequence,列在PyList_Typetp_as_sequence 槽中。

    list_item function 实现了__getitem__ 钩子,__setitem__list_ass_item 表示。

    另一方面,切片由映射协议处理,您最终会(通过list_as_mappinglist_subscriptlist_ass_subscript

    【讨论】:

      【解决方案2】:

      查看文件listobject.c ...我添加了一个answer earlier today,它指向您正在寻找的很多东西

      【讨论】:

        猜你喜欢
        • 2021-07-09
        • 2011-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-17
        • 2019-10-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多