元组 (a, b) = (b, a) 中的成员交换如何在内部工作?
元组中的成员交换如何进行?元组是通过一系列堆栈操作来执行的,而不使用临时变量。 Python 将右侧表达式与左侧赋值分开。
对于具有 2 或 3 个项目的元组:
计算右侧,将 [a, b] 压入堆栈。 ROT_TWO 操作码交换顶部两个位置,导致 [b, a] 位于顶部。然后 STORE_FAST 操作码将这些值存储在左侧变量中,而不使用临时变量。
对于具有 4 个或更多项目的元组:
构建显式元组从右边的表达式。 UNPACK_SEQUENCE 操作码将元组从堆栈中弹出,并以相反的顺序将其元素推回到堆栈中。随后的 STORE_FAST 操作将这些值存储在左侧变量中。
针对 2 和 3 名称分配的优化:
窥视孔优化取代了低效的 BUILD_TUPLE/UNPACK_SEQUENCE与更快的 ROT_TWO/ROT_THREE 操作码组合,用于 2 和3 个名称分配。
以上是Python 内部元组交换如何工作?的详细内容。更多信息请关注PHP中文网其他相关文章!