Comma separated variable assignment
本问题已经有最佳答案,请猛点这里访问。
有人可以告诉我第四行在做什么吗?
1 2 3 4 5 6 7 8 | 1 def fib2(n): # return Fibonacci series up to n 2 ... """Return a list containing the Fibonacci series up to n.""" 3... result = [] 4... a, b = 0, 1 #this line 5... while a < n: 6... result.append(a) 7... a, b = b, a+b 8... return result |
您描述的是元组分配:
1 | a, b = 0, 1 |
等效于
但是,如果您想交换值,它可能会产生有趣的效果。喜欢:
1 | a,b = b,a |
首先将构造一个元组
1 2 3 | #not equal to a = b b = a |
但要(使用临时):
1 2 3 | t = a a = b b = t |
通常,如果赋值运算符左边有一个用逗号分隔的变量列表,并且有一个生成元组的表达式,则将元组解包并存储在值中。所以:
1 2 | t = (1,'a',None) a,b,c = t |
将
出于阅读目的,它所做的只是将
更具体地说,它正在设置元组。元组是不变的,因为一旦创建它们,它们的值就不会改变。元组在python中无处不在-您几乎可以在任何地方看到它们。
通常,您希望元组在括号中,例如
元组可以是任何长度。您可以编写