python - 在处理元组/列表时,Python 的堆栈是如何工作的?
问题描述
我在 Python文档中看到BUILD_TUPLE
指令“从堆栈中创建一个消耗计数项的元组,并将生成的元组推入堆栈”。
它真的推动了元组本身吗?如果元组包含大量元素怎么办?它是如何放置在堆栈上的?
解决方案
在@juanpa.arrivillaga 的回答和我第一次玩这个dis
模块之后……</p>
分解琐碎的功能可能是有益的:
def foo(a, b, c):
return (a, b, c)
这导致:
2 0 LOAD_FAST 0 (a)
2 LOAD_FAST 1 (b)
4 LOAD_FAST 2 (c)
6 BUILD_TUPLE 3
8 RETURN_VALUE
换句话说:我们确保堆栈顶部有正确的参数值,然后将它们全部弹出并用(引用)单个元组替换它们。
这就是stack machine的传统操作方式,我相信 CPython 是(至少部分)模仿的,例如,python 基于堆栈是什么意思?
推荐阅读
- bash - 可以 ssh 到远程机器并执行命令的 bash 脚本,当密码不正确时抛出错误
- reactjs - 保存时反应管理员确认对话框
- python - 赛马 scikit learn 的预测 - 每场比赛多行
- json - xslt 3.0 xml 转 JSON 数字格式
- wordpress - 在显示帖子之前更新帖子元
- python - 由于 EnvironmentError,pip3 安装失败
- jenkins - 使用“标签”或在 jenkinsfile 中为 kubernetes-plugin 定义一个 pod 模板?
- azure - 按服务类型删除 azure 资源
- c# - 如果 Textbox ReadOnly = true,如何获取 Textbox.Text?
- python - 在 pandas 数据框中具有特定模式的列中搜索具有通配符的值