我一直认为元组匹配与变量赋值相同,所以我认为这两段代码做了同样的事情:
a = b
b = a + b
和
a, b = b, a + b
但是,在以下两段代码中,情况并非如此,它们为我提供了不同的输出:
def fib(seq_len):
a = 1
b = 1
sequence = []
for i in range(seq_len):
sequence.append(a)
a, b = b, a + b
return sequence
fib(10)
它给出输出:
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
和
def fib(seq_len):
a = 1
b = 1
sequence = []
for i in range(seq_len):
sequence.append(a)
a = b
b = a + b
return sequence
fib(10)
它给出以下输出:
[1, 1, 2, 4, 8, 16, 32, 64, 128, 256]
似乎在 的第一个定义中,前面的值被用于,但我不明白它如何记住以前的值,因为我们已经分配给了另一个值,即 在转到之前fibaa, b = b, a + babb = a + b
慕码人2483693
相关分类