猿问

Python中的元组匹配与变量赋值

我一直认为元组匹配与变量赋值相同,所以我认为这两段代码做了同样的事情:


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


手掌心
浏览 113回答 1
1回答

慕码人2483693

a, b = b, a + b等效于t = b, a + ba, b = t不a = bb = a + b  # essentially, b = 2 * b在执行任一分配之前,必须完全评估右侧。
随时随地看视频慕课网APP

相关分类

Python
我要回答