waf*_*ead 2 python variables fibonacci
我正在查看Python手册,并找到了一个Fibonacci-Number生成器的代码片段:
def fib(n): # write Fibonacci series up to n
a, b = 0, 1
while b < n:
print(b, end=' ')
a, b = b, a+b
print()
Run Code Online (Sandbox Code Playgroud)
输出依赖于n并返回有效的Fibonacci序列.
如果你重新设计它以单独使用变量"a"和"b":
def fib(n): # write Fibonacci series up to n
a = 0
b = 1
while b < n:
print(b, end=' ')
a = b
b = a+b
print()
Run Code Online (Sandbox Code Playgroud)
然后它将打印一个数字序列,其增加2的幂(例如1,2,4,8,1等等).
所以我想知道为什么会这样?变量的两次使用之间的实际差异是什么?
这样做:
a, b = b, a+b
相当于:
temp = a
a = b
b += temp
Run Code Online (Sandbox Code Playgroud)
它允许您同时进行两次计算,而无需中间/临时变量.
所不同的是,在你的第二个代码段,当你做的第二行b = a+b,你已经体改a前一行是不一样的第一段代码.
>>> a = 2
>>> b = 3
>>> a,b
2 3
>>> a,b = b,a
>>> a,b
3 2
Run Code Online (Sandbox Code Playgroud)
另一方面,如果您使用问题中显示的第二种方法:
>>> a = 2
>>> b = 3
>>> a,b
2 3
>>> a = b
>>> b = a
>>> a,b
3 3
Run Code Online (Sandbox Code Playgroud)