【发布时间】:2020-12-13 09:18:20
【问题描述】:
问题:有人可以解释一下输出吗?为什么z等于第二个2中的print()?
代码:
x=1
y=2
x,y,z=x,x,y
print(y,x,y,z)
z,y,z=x,y,z
print(x,y,z)
输出:
1 1 1 2
1 1 2
【问题讨论】:
-
因为您将
z设置为y,然后在print(y,x,y,z)中打印z? -
在创建(第二个)元组
(1, 1, 2)之后,它会按顺序将其解包到z,y,z中。所以首先它执行z=1然后y=1,然后z=2覆盖它刚刚分配的1。 -
This 可能会帮助您更好地了解变量交换的工作原理。这是从队列中推送和弹出的问题。
-
代码有什么困惑?为什么你认为它应该不是 2?
-
再一次,你到底认为什么是不正确的。说“这是错误的,请解释一下”并不能告诉我们你认为它有什么问题。基本上,解释你认为答案应该是什么以及为什么,然后我们可以纠正你的想法:)
标签: python iterable-unpacking multiple-assignment