Python における複数の代入と評価順序
Python では、複数の変数に同時に値が代入される複数の代入が一般的です。ただし、このような割り当ての評価順序は、予期しない結果を招く可能性があります。
問題
次のコードを考えてみましょう。
>>> x = 1 >>> y = 2 >>> x, y = y, x + y # Multiple assignment
この後代入では、x と y の値は次のとおりです:
>>> x 2 >>> y 3
これは、考えられるものとは異なります。代入が別々に行われた場合を想定します:
>>> x = 1 >>> y = 2 >>> x = y # Assign x to the current value of y >>> y = x + y # Assign y to the sum of x and y >>> x 2 >>> y 4
説明
この違いは、代入ステートメントの評価順序により発生します。 Python では、変数への実際の代入が行われる前に、代入の右側が最初に評価されます。
最初の例では、x、y = y、x y を代入すると、右側はhand 側は次のように評価されます:
ham = y # Where ham = 2 spam = x + y # Where spam = 1 + 2 = 3
そして、x にはハム (2) の値が割り当てられ、y にはスパム (3) の値が割り当てられます。これが、x = 2 および y = 3 という結果が得られる理由です。
対照的に、2 番目の例では、最初に x に y の値 (2) が割り当てられます。次に、y に次の合計が割り当てられます。 x (2) と y (2) の結果は 4.
以上がPython の複数の代入は変数の評価順序にどのような影響を与えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。