简单而简短的问题。在Python中交换两个变量非常简单:a, b = b, a
。没关系,我没有异议:)但我对内部的工作方式感兴趣吗?它是自己创建一些临时变量还是更有趣(我敢打赌)?
答案 0 :(得分:34)
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的值,旋转(交换)前两个元素,然后再次弹出值。
另见: