簡體   English   中英

Python 中的元組匹配與變量賦值

[英]Tuple matching vs. variable assignment in 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]

看來,在第一定義fib ,以前值a被用於a, b = b, a + b ,但我不明白它是如何記住以前的值,因為我們都賦予a到另一個值,即b在繼續b = a + b

a, b = b, a + b等價於

t = b, a + b
a, b = t

不是

a = b
b = a + b  # essentially, b = 2 * b

在您執行任一分配之前,必須對右側進行全面評估。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM