澄清Python For循环中发生了什么

时间:2016-06-29 16:57:33

标签: python for-loop

我正在使用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表示法。我没有成功地搜索文档。

4 个答案:

答案 0 :(得分:1)

x, y = y, x + y

x被赋予y
的值 并且y被赋值为x + y

答案 1 :(得分:1)

comma表示右侧是包含yx+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!'是元组打包的示例:值1234554321'hello!'在元组中打包在一起。反向操作也是可能的:

x, y, z = t
  

这足够恰当地称为序列解包,适用于右侧的任何序列。序列解包需要左侧的变量列表具有与序列长度相同的元素数。请注意,多重赋值实际上只是元组打包和序列解包的组合。