简单而简短的问题。在Python中交换两个变量非常简单:a, b = b, a
。没关系,我没有异议:)但是我感兴趣的是它是如何在内部工作的?它是自己创建了一些临时变量,还是更有趣(我敢打赌是这样)?
发布于 2011-12-21 17:02:24
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的值推入堆栈,旋转(交换)顶部的两个元素,然后再次弹出这些值。
另请参阅:
https://stackoverflow.com/questions/8587236
复制相似问题