在一行和几行上写东西之间的区别
问题内容:
当我在一行上写东西时,用a,
和两行分隔的区别在哪里?显然我不明白其中的区别,因为尽管下面的两个函数应该返回相同的结果。
def fibi(n):
a, b = 0, 1
for i in range(n):
a, b = b, a + b
return a
print(fibi(6))
> 8 # expected result (Fibonacci)
但
def fibi(n):
a, b = 0, 1
for i in range(n):
a = b
b = a + b
return a
print(fibi(6))
> 32
问题答案:
这是由于Python的元组解包。在第一个示例中,Python收集右侧的值,将其设为一个元组,然后将元组的值分别分配给左侧的名称。因此,如果a == 1和b
== 2:
a, b = b, a + b
=> a, b = (2, 3)
=> a = 2, b = 3
但是在第二个示例中,这是常规分配:
a = b
=> a = 2
b = a + b
=> b = 4