我刚开始学习python3,但我遇到了以下代码:
a = 1
b = 2
a,b = b,a
print(a) #prints 2
print(b) #prints 1
这一行a,b = b,a
如何运作? Python会自动创建一些临时变量吗?什么是看不见的可能性?我的意思是,我可以在一行中对3个或更多变量做同样的事情吗?
答案 0 :(得分:6)
使用dis
反汇编:
from dis import dis
def swap(a, b):
a, b = b, a
return a, b
dis(swap)
给出
7 0 LOAD_FAST 1 (b)
3 LOAD_FAST 0 (a)
6 ROT_TWO
7 STORE_FAST 0 (a)
10 STORE_FAST 1 (b)
8 13 LOAD_FAST 0 (a)
16 LOAD_FAST 1 (b)
19 BUILD_TUPLE 2
22 RETURN_VALUE
其中ROT_TWO
表示
交换两个最顶层的堆栈项目。
python不需要创建临时变量。
答案 1 :(得分:0)
您也可以使用多个变量来做到这一点,但这很棘手:
>>> a = 1
>>> b = 2
>>> c = 3
>>> a, b, c = c, a, b
>>> c
2
>>> a
3
>>> b
1
>>>
当您想要更新某些值时,这非常有用。例如,如果y
的新值需要增加x
,而x
需要增加y
的值:
x, y = y, y + x