我正在使用Coursera Python课程,并且有点简略。
x = 0
y = 1
for i in range(40):
x, y = y, x + y
print y
我知道它是添加X和Y并将新值分配给Y但不完全遵循x,y = y,x + y表示法。我没有成功地搜索文档。
答案 0 :(得分:1)
x, y = y, x + y
x被赋予y
的值
并且y被赋值为x + y
答案 1 :(得分:1)
comma
表示右侧是包含y
和x+y
的元组。左侧的comma
表示应该完成解包。
因此x
获取y
的值,y
获取x+y
的值
您可以同时检查引用的变化方式here
打开链接后,点击visual execution
并继续点击forward
。
答案 2 :(得分:0)
这将y指定给x,将x + y指定给y,但请注意它是在“同一时间”执行的。如果您尝试了类似
的内容x = y
y = x + y
print y
你会得到完全不同的结果。
答案 3 :(得分:0)
此功能名为sequence packing\unpacking
。它由两部分组成:在=
符号附近打包右侧表达式,然后将其从右侧解压缩为变量。
语句
t = 12345, 54321, 'hello!'
是元组打包的示例:值12345
,54321
和'hello!'
在元组中打包在一起。反向操作也是可能的:
x, y, z = t
这足够恰当地称为序列解包,适用于右侧的任何序列。序列解包需要左侧的变量列表具有与序列长度相同的元素数。请注意,多重赋值实际上只是元组打包和序列解包的组合。