https://zhuanlan.zhihu.com/p/159471712
python交换两个变量为什么可以直接交换?
- Python 能在一条语句中实现多重赋值,这是利用了序列解包的特性
- Python 能在一条语句中实现变量交换,不需引入中间变量,在变量数少于 4 个时(3.8 版本起是少于 5 个),CPython 是利用了 ROT_* 指令来交换栈中的元素,当变量数超出时,则是利用了序列解包的特性。
- 序列解包是 Python 的一大特性,但是在本文的例子中,CPython 解释器在小小的操作中还提供了几个优化的指令,这绝对会超出大多数人的认知