使用Fibonacci序列时:
a = 1
b = 3
a, b = b, a + b
print a, b
这适用于a = 3
和b = 4
现在,如果我将其重新编码为:
a = 1
b = 3
a = b
b = a + b
print a, b
结果变量b
为6
而不是4
。
发生了什么"背后的场景"当使用单行a, b = b, a + b
时?
答案 0 :(得分:6)
答案 1 :(得分:0)
b = 3
然后
a = b
然后
b = a + b
这是一样的
b = b + b
或者,换句话说,
b = 3 + 3
,
所以b = 6
。
第一个就像a, b = 3, 1 + 3
或a, b = 3, 4
所以b = 4
。
答案 2 :(得分:0)
(
)
不要将序列设为元组,而是,
。
a, b = b, a + b # => (a,b) = (a, a+b) if written with brackets
所以,它的标准元组拆包。但是名称 a
和b
的问题是,它们现在是不同对象的名称,即那些称为{{1}的对象以前是b
的结果。这种行为部分是由于python中的变量名称是 names ,而不是像C一样存储值的盒子。