0%

Python中a , b = b , a + b与a = b , b = a + b 的区别(超详细解答)

在最近学的Python斐波那契数列(Fibonacci sequence)中遇到了这么一个奇怪的赋值计算方式,a , b =b ,a + b:

源代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import sys

def Fibonacci(k):
a = 0
b = 1
count = 0
while True:
if(count > k):
return
yield a
a,b=b,a+b
count+=1


def testPrint(data):

Fou = Fibonacci(data) #注:F为yield生成器返回生成的迭代器,相当于iter()
while True:
try:
print(next(Fou), end = " ")
except StopIteration:
sys.exit()

testPrint(10)

输出结果如是:

1
2
3
D:\Program Files\Python37\python.exe" E:/python/LearnProject/FileOpration.py
0 1 1 2 3 5 8 13 21 34 55
进程已结束,退出代码0

将以上源代码中a , b = b ,a + b 换成 a = b , b = a + b后,效果如下:

部分切换后的源代码:
在这里插入图片描述
结果如下:

1
2
3
"D:\Program Files\Python37\python.exe" E:/python/LearnProject/FileOpration.py
0 1 2 4 8 16 32 64 128 256 512
进程已结束,退出代码0

分析

a = 0
b = 1
count = 0
初始赋值如上所示,count记录循环次数。
进入循环:

对于a , b = b ,a + b :

  1. 计算过程:首先计算b = b ,a + b,即 b = b = 1, a +b = 0 + 1 = 1 ;
  2. 接下来赋值: a = b = 1;
  3. 继续循环重复以上步骤,请拿出笔自行演算或参见以上输出结果。

    对于a = b , b = a + b :

  4. 这是最为常见的赋值计算式,计算过程:首先赋值 a = b = 1;
  5. 接下来计算: b = a + b = 1 + 1 = 2;
  6. 注意到这里两个式子结果已经不同,导致了以上第二次输出情况。
  7. 继续循环重复以上步骤,请拿出笔自行演算或参见以上输出结果。

更多资讯及资源分享,请扫描下方二维码交流:

在这里插入图片描述

-------------结束啦 我可是有底线的~ -------------

欢迎关注我的其它发布渠道