在Python2.7文档中滚动我发现了这个片段

def fib(n):    # write Fibonacci series up to n
    a, b = 0, 1
    while b < n:
        print a,
        a, b = b, a+b

但我不明白最后一句话,也不知道该怎么用谷歌搜索。

最佳答案

Python首先计算赋值的右边。It evaluates

b, a+b

从左到右。然后将值分别赋给变量ab
所以a, b = b, a+b等于
c = b
d = a+b
a = c
b = d

只不过它在没有显式临时变量的情况下实现了结果。
查看Pythonevaluation order上的文档。
这里有一个微妙的点值得用一个例子来研究。假设a=1,b=2。
a, b = b, a+b

相当于
a, b = 2, 1+2
a, b = 2, 3

所以a被分配到2,b被分配到3。
注意,这不等于
a = b
b = a + b

因为第一行将指定
a = 2
b = 2 + 2 = 4

。。

关于python - Python语法说明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22795165/

10-12 21:08