简单而简短的问题。在 Python 中交换两个变量非常简单:a, b = b, a
。没关系,我没有异议 :) 但我对它在内部的工作方式很感兴趣?它会自己创建一些临时变量还是更有趣(我敢打赌)?
最佳答案
Python 源代码转换为 bytecode在执行之前。您可以通过使用反汇编器 dis
来查看交换在内部是如何工作的,以查看字节码的样子:
import dis
>>> def f(a,b): a, b = b, a
>>> dis.dis(f)
1 0 LOAD_FAST 1 (b)
3 LOAD_FAST 0 (a)
6 ROT_TWO
7 STORE_FAST 0 (a)
10 STORE_FAST 1 (b)
13 LOAD_CONST 0 (None)
16 RETURN_VALUE
简单来说,它将 a 和 b 的值压入堆栈,旋转(交换)顶部两个元素,然后再次弹出值。
另见:
关于python - 变量交换如何在内部工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8587236/