|
|
发表于 2017-6-12 09:35:03
|
显示全部楼层
看看内部的操作是怎么样的
- >>> def fn():
- i,j = 1,2
- i,j = j,i
-
- >>> import dis
- >>> dis.dis(fn)
- 2 0 LOAD_CONST 3 ((1, 2)) # 元组序列 压入 栈顶
- 3 UNPACK_SEQUENCE 2 # 分拆 栈顶的序列,然后从右到左依次压入栈顶
- 6 STORE_FAST 0 (i) # i = 1
- 9 STORE_FAST 1 (j) # j = 2
- 3 12 LOAD_FAST 1 (j) # j 入栈
- 15 LOAD_FAST 0 (i) # i 入栈
- 18 ROT_TWO # 交换栈中最上面的2个值
- 19 STORE_FAST 0 (i) # i = j
- 22 STORE_FAST 1 (j) # j = i
- 25 LOAD_CONST 0 (None)
- 28 RETURN_VALUE
- >>> a,b='12' # 这是个 分拆序列 的表达式。
- >>> a
- '1'
- >>> b
- '2'
- >>>
复制代码
i,j = 1,2 和 i,j = j,i 看着很像,内部却是2种不同的操作
i,j = 1,2 是 分拆序列
i,j = j,i 是 交换变量
|
|