滚动浏览python 2.7文档我遇到了这个片段
def fib(n): # write Fibonacci series up to n
a, b = 0, 1
while b < n:
print a,
a, b = b, a+b
Run Code Online (Sandbox Code Playgroud)
但我不明白最后一行,也不确定我会如何谷歌.
我该怎么读a, b = b, a+b,或者它是什么意思?
Python首先评估赋值的右侧.它评估
b, a+b
Run Code Online (Sandbox Code Playgroud)
从左到右.然后,它分配值的变量a和b分别.
所以a, b = b, a+b相当于
c = b
d = a+b
a = c
b = d
Run Code Online (Sandbox Code Playgroud)
除了它没有明确的临时变量就能达到结果.请参阅有关Python 评估顺序的文档.
这里有一个微妙的观点值得一试.假设a = 1,b = 2.
a, b = b, a+b
Run Code Online (Sandbox Code Playgroud)
相当于
a, b = 2, 1+2
a, b = 2, 3
Run Code Online (Sandbox Code Playgroud)
因此a分配给2,b分配给3.
请注意,这不等同于
a = b
b = a + b
Run Code Online (Sandbox Code Playgroud)
由于第一行将分配
a = 2
b = 2 + 2 = 4
Run Code Online (Sandbox Code Playgroud)
请注意,完成此(错误)方式,b最终等于4,而不是3.这就是为什么知道Python首先评估赋值的右侧(在进行任何赋值之前)的重要性.
| 归档时间: |
|
| 查看次数: |
48 次 |
| 最近记录: |