我在Python中看到documentation BUILD_TUPLE
指令“创建一个消耗堆栈中 count 项的元组,并将生成的元组插入堆栈。”
它真的插入元组本身吗?如果元组包含大量元素怎么办?它是如何放入堆栈的?
最佳答案
进一步@juanpa.arrivilillaga的回答和我第一次使用dis
模块......
反汇编这个简单的函数可能会有启发:
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(至少部分)是模仿的,例如What does it mean that python is stack based?
关于python - 在处理元组/列表时,Python 的堆栈如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53364821/