在python3中交换变量

在python3中交换变量,python,python-3.x,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个或更多变量执行相同的操作吗?您也可以对多个变量执行此操作,但这会变得很棘手: >>> a = 1 >>> b = 2 >>> c = 3 >&

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

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

这条线
a,b=b,a
如何工作?Python是否自动创建一些临时变量?那些看不见的可能性是什么?我的意思是,我可以对一行中的3个或更多变量执行相同的操作吗?

您也可以对多个变量执行此操作,但这会变得很棘手:

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

您也可以使用多个变量执行此操作,但这会变得很棘手:

>>> 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
拆卸时使用:

给予

这意味着什么

交换最上面的两个堆栈项

python不需要创建临时变量。

使用以下方法进行反汇编:

给予

这意味着什么

交换最上面的两个堆栈项


python不需要创建临时变量。

否,python不创建临时变量。这一切都是在堆栈上完成的。@MartijnPieters我已经删除了那个部分,但我没有意识到。谢谢:)不,Python不创建临时变量。这一切都是在堆栈上完成的。@MartijnPieters我已经删除了那个部分,但我没有意识到。谢谢:是的,它确实是一个副本。是的,它确实是一个复制品。这和争辩说,通过TEMP变量交换C++不需要临时变量,因为临时寄存器将存储在登记处,这基本上就是这里发生的事情。但我同意……这和通过Timp变量交换C++不需要临时变量一样,因为临时登记将存储在寄存器中,这基本上就是这里发生的事情。但我有点同意。。。