Python で 2 つの変数を交換する標準的な方法はありますか? 質問する

Python で 2 つの変数を交換する標準的な方法はありますか? 質問する

Python では、次の構文を使用して 2 つの変数値が交換されるのを見たことがあります。

left, right = right, left

これは 2 つの変数値を交換する標準的な方法と考えられますか、それとも慣例により 2 つの変数を交換する最も一般的な方法は他に何かありますか?

ベストアンサー1

Python は式を左から右に評価します。代入を評価する際、右側が左側より先に評価されることに注意してください。

Python ドキュメント: 評価順序

つまり、式は次のようになりますa,b = b,a

  • 右側b,aが評価され、つまり、メモリ内に 2 つの要素のタプルが作成されます。2 つの要素は、プログラムの実行中に命令が見つかる前に存在していた識別子 および で指定されたオブジェクトbですa
  • このタプルの作成直後は、このタプル オブジェクトの割り当てはまだ行われていませんが、それは問題ではありません。Python は内部的にその場所を認識しています。
  • 次に、左側が評価されます。つまり、タプルが左側に割り当てられます。
  • 左側は 2 つの識別子で構成されているため、タプルは展開され、最初の識別子がaタプルの最初の要素 (名前が であったため、スワップ前はbbであったオブジェクト)に割り当てられ
    、2 番目の識別子bがタプルの 2 番目の要素 (識別子が であったため、スワップ前はaaであったオブジェクト)に割り当てられます。

このメカニズムにより、識別子に割り当てられたオブジェクトが効果的に交換されab

したがって、あなたの質問に答えると、はい、それは 2 つのオブジェクトの 2 つの識別子を交換する標準的な方法です。
ちなみに、オブジェクトは変数ではなく、オブジェクトです。

おすすめ記事