-4
所以我的问题是关于行“a, b=b, a+b
”以及行“a,b = 0,1
”为什么此代码打印斐波那契数列?
这些行是什么意思,他们在做什么?
def fib2(n):
result = []
a, b = 0, 1
while a < n:
result.append(a)
a, b = b, a+b
return result
所以我的问题是关于行“a, b=b, a+b
”以及行“a,b = 0,1
”为什么此代码打印斐波那契数列?
这些行是什么意思,他们在做什么?
def fib2(n):
result = []
a, b = 0, 1
while a < n:
result.append(a)
a, b = b, a+b
return result
a, b=b, a+b
是多任务声明。在这样的陈述中,右侧的表达式在任何任务发生之前首先被评估为 。右侧表达式从左到右进行评估。
类似的情况为a,b=0,1
,其中a
得到0
和b
得到1
。
a, b=b, a+b # is described as
temp = a
a = b
b= temp + b
,如果你在外壳看a,b = 0,1
In [37]: a,b = 0,1
In [38]: a,b
Out[38]: (0, 1)
In [40]: type((a, b))
Out[40]: tuple
In [41]: a
Out[41]: 0
In [42]: b
Out[42]: 1
所以它只是变量赋值给元组值