python - CPython 源代码中的列表推导式在哪里实现?

标签 python list list-comprehension cpython

我知道listobject.c包含 CPython 中 list 对象的实现,但是,我如何找到处理列表推导式的源代码?

最佳答案

没有处理列表推导的特定函数,而是使用操作码的组合来指导其创建。

如果你看一下 dis.dis 的输出为了便于理解,您可以查看以下步骤:

dis.dis('[i for i in ()]')

Disassembly of <code object <listcomp> at 0x7fc24c04a6f0, file "<dis>", line 1>:
  1           0 BUILD_LIST               0
              2 LOAD_FAST                0 (.0)
        >>    4 FOR_ITER                 8 (to 14)
              6 STORE_FAST               1 (i)
              8 LOAD_FAST                1 (i)
             10 LIST_APPEND              2
             12 JUMP_ABSOLUTE            4
        >>   14 RETURN_VALUE

我只包含了列表理解的相关反汇编。

通过查看名称可以看出,这会构建一个列表,然后遍历提供的迭代器并附加值。您可以打开ceval.c如果您需要更详细地了解每个操作码执行的操作,只需搜索每个操作码即可。

关于python - CPython 源代码中的列表推导式在哪里实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62281997/

相关文章:

python - 根据子项 'resizer' 项的位置调整 QGraphicsItem 的大小

list - Tcl 在使用 `$` 符号时添加花括号

python - 如何将 csv 转换并格式化为列表列表,其中标题名称包含在值中

julia - 如何在 Julia 中使用 map 来模拟嵌套列表理解?

Python元组字典加法

python - 从 Python 列表创建字典数组

Python解析结构化文本文件

python - 如何找到对数线性回归的方差分析?

使用 JwT token 身份验证对 HTTP Rest API 的 Python 发布请求生成重复的帖子

python - 在 Python 中用相同的列表减去列表中的列表