Python では、次の構文を使用して 2 つの変数値が入れ替わっているのを見てきました。
left, right = right, left
これは2つの変数値を交換する標準的な方法と考えられていますか、それとも慣例により2つの変数が最も通常交換される他の手段はありますか?
Python では、次の構文を使用して 2 つの変数値が入れ替わっているのを見てきました。
left, right = right, left
これは2つの変数値を交換する標準的な方法と考えられていますか、それとも慣例により2つの変数が最も通常交換される他の手段はありますか?
Python は式を左から右に評価します。代入を評価する際、右側が左側より先に評価されることに注意してください。
これは、式 について次のことを意味しますa,b = b,a
。
b,a
が評価されます。つまり、2 つの要素のタプルがメモリに作成されます。2 つの要素は、プログラムの実行中に命令が検出される前に存在していた識別子b
およびによって指定されたオブジェクトです。a
a
がタプルの最初の要素に割り当てられるようにタプルがアンパックされます (これはname を持っていたため、スワップ前は以前はbb
だったオブジェクトです) b
は、タプルの 2 番目の要素に割り当てられます (これは、識別子が であったため、以前はスワップ前であったオブジェクトですa
) 。このメカニズムにより、識別子に割り当てられたオブジェクトが効果的に交換されa
、b
したがって、あなたの質問に答えるには: はい、2 つのオブジェクトで 2 つの識別子を交換する標準的な方法です。
ところで、オブジェクトは変数ではなく、オブジェクトです。
これは、2 つの変数を交換する標準的な方法です。
変数を交換する 3 つの方法を知っていますa, b = b, a
が、最も簡単な方法です。がある
x = x ^ y
y = y ^ x
x = x ^ y
または簡潔に言うと、
x ^= y
y ^= x
x ^= y
w = x
x = y
y = w
del w
x, y = y, x