def fibonacci(x):
a=0
b=1
for i in range(x-1):
b, a = a+b, b
return b
x = input ("Give me the number! ")
print "The",x,". Fibonacci number: "
print fibonacci (x)因此,代码是完全工作的,但我不理解b,a=a+b,b行,那么这是做什么呢?:s
发布于 2014-04-09 17:12:14
Python支持几种不同形式的多重赋值。特别地,
>>> a = b = c = 1
>>> a
1
>>> b
1
>>> c
1和
>>> a, b, c, *the_rest = list(range(10))
>>> a
0
>>> b
1
>>> c
2
>>> the_rest
[3, 4, 5, 6, 7, 8, 9]所以你所拥有的相当于:
tmp = b
b = a+b
a = tmp发布于 2014-04-09 17:10:57
类似于一个基本的交换成语,它基本上类似于执行以下操作:
tmp = b
b = a + b
a = tmp发布于 2014-04-09 17:13:11
Python将右侧表达式与左侧赋值分隔开来。首先计算右边的值,然后将结果存储在堆栈上,然后使用重新从堆栈中获取值的操作码分配左边的名称。
>>> import dis
>>> def foo(a, b):
... a, b = b, a
...
>>> dis.dis(foo)
2 0 LOAD_FAST 1 (b)
3 LOAD_FAST 0 (a)
6 ROT_TWO
7 STORE_FAST 0 (a)
10 STORE_FAST 1 (b)
13 LOAD_CONST 0 (None)
16 RETURN_VALUE 就像其他的拆包任务一样。
首先,创建一个由b和a的值组成的元组。然后这个元组被解压成a和b,有效地交换它们。
>>> a=5
>>> b=6
>>> a,b = b,a
>>> a
6
>>> b
5现在使用这个属性生成Fibonacci序列。
https://stackoverflow.com/questions/22969366
复制相似问题