在python3中交换变量

时间:2017-06-13 09:46:31

标签: python python-3.x

我刚开始学习python3,但我遇到了以下代码:

a = 1
b = 2
a,b = b,a
print(a) #prints 2
print(b) #prints 1

这一行a,b = b,a如何运作? Python会自动创建一些临时变量吗?什么是看不见的可能性?我的意思是,我可以在一行中对3个或更多变量做同样的事情吗?

2 个答案:

答案 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