ホームページ >バックエンド開発 >Python チュートリアル >Python の複数代入は逐次代入とどう違うのでしょうか?

Python の複数代入は逐次代入とどう違うのでしょうか?

DDD
DDDオリジナル
2024-12-05 02:26:09402ブラウズ

How Does Python's Multiple Assignment Differ from Sequential Assignment?

Python における複数の代入の謎

Python では、すぐには明らかではない方法で代入を評価できます。そのようなケースの 1 つは、2 つ以上の変数に同時に値が割り当てられる多重代入です。

次のことを考えてみましょう:

>>> x = 1
>>> y = 2

次に、両方の値を一度に割り当ててみましょう:

>>> x, y = y, x + y
>>> x
2
>>> y
3

予想外に、これは値を割り当てる場合と比べて異なる結果を生成します。個別に:

>>> x = 1
>>> y = 2
>>> x = y
>>> y = x + y
>>> x
2
>>> y
4

説明

この動作を理解する鍵は、代入ステートメントの評価順序にあります。 Python では、代入の右側は変数を実際に設定する前に常に完全に評価されます。

最初のケース "x, y = y, x y" では、右側は次のように評価されます。

  • y は ham と評価されます。
  • x y は次のように評価されます。 spam.

変数は次の値に設定されます: x にはハムが割り当てられ、y にはスパムが割り当てられます。

対照的に、2 番目のケースでは、「x = y; y = x y" の場合、割り当ては順番に行われます。x が y に設定され、次に y が x y に設定されます。これは y と同等です。 y.

したがって、最初のケースの複数代入は、値が同時に評価され設定されるため、動作が異なります。個別の割り当てを実行する場合は、後者の順次アプローチを使用する必要があります。

以上がPython の複数代入は逐次代入とどう違うのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。