Swap
虽然Python是继承于C的,但是Python的数值交换并不是像C/C++那样利用引用交换,而是在程序栈里通过机器码完成的,下面这段代码可以看出原理(可能是Python3的代码)
>>> dis.dis('a, b = b, a')
1 0 LOAD_NAME 0 (b)
3 LOAD_NAME 1 (a)
6 ROT_TWO
7 STORE_NAME 1 (a)
10 STORE_NAME 0 (b)
13 LOAD_CONST 0 (None)
16 RETURN_VALUE
首先将变量 b 的值推入栈
然后将变量 a 的值推入栈
交换栈顶的两元素(结果是 b 的值位于栈顶)
栈顶的值(b)赋值给变量 a
栈顶的值(a)赋值给变量 b