我一直認(rèn)為元組匹配與變量賦值相同,所以我認(rèn)為這兩段代碼做了同樣的事情:a = bb = a + b和a, b = b, a + b但是,在以下兩段代碼中,情況并非如此,它們?yōu)槲姨峁┝瞬煌妮敵觯篸ef fib(seq_len): a = 1 b = 1 sequence = [] for i in range(seq_len): sequence.append(a) a, b = b, a + b return sequencefib(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 sequencefib(10)它給出以下輸出:[1, 1, 2, 4, 8, 16, 32, 64, 128, 256]似乎在 的第一個定義中,前面的值被用于,但我不明白它如何記住以前的值,因?yàn)槲覀円呀?jīng)分配給了另一個值,即 在轉(zhuǎn)到之前fibaa, b = b, a + babb = a + b
1 回答

慕碼人2483693
TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個贊
a, b = b, a + b等效于
t = b, a + b
a, b = t
不
a = b
b = a + b # essentially, b = 2 * b
在執(zhí)行任一分配之前,必須完全評估右側(cè)。
添加回答
舉報(bào)
0/150
提交
取消