これの違いは何ですか:
a, b = b, a+b
この:
a = b
b = a+b
ドキュメントの例に沿って進めようとしていますが、最初の形式 (複数代入構文) は複雑に思えます。2 番目の例で単純化しようとしましたが、同じ結果が得られません。私は明らかに最初のステートメントを間違って解釈しています。私は何が欠けていますか?
これの違いは何ですか:
a, b = b, a+b
この:
a = b
b = a+b
ドキュメントの例に沿って進めようとしていますが、最初の形式 (複数代入構文) は複雑に思えます。2 番目の例で単純化しようとしましたが、同じ結果が得られません。私は明らかに最初のステートメントを間違って解釈しています。私は何が欠けていますか?
多重代入は、左側の値を変更する前に、右側のすべての値を評価します。
つまり、違いは次のとおりです。
a = 1
b = 2
a = b # a = 2
b = a + b # b = 2 + 2
対これ:
a = 1
b = 2
a, b = b, a + b # a, b = 2, 1 + 2
それについての別の考え方は、タプルを構築してから再び分解することと同等であるということです (これは、明示的な中間タプルがない場合を除いて、実際に起こっていることとまったく同じです):
a = 1
b = 2
_tuple = (b, a+b)
a = _tuple[0]
b = _tuple[1]