Python の連鎖代入。
x = y = somefunction()
は、連続して実行される次の 2 つのステートメントと同等です:
temp = somefunction() x = temp y = temp
これは、代入演算子の右側の式が最初に評価され、その結果の値がすべての演算子に代入されることを意味します。
たとえば、次のコードは数値 10 を 2 回出力します。
def somefunction(): return 10 x = y = somefunction() print(x) print(y)
連鎖代入は次のように行うことができることに注意することが重要です。リストなどの変更可能なオブジェクトを扱う場合には問題になります。たとえば、次のコードは、x と y の両方に同じ空のリストを割り当てます。
x = y = [] x.append(1) print(x) print(y)
x と y は両方とも同じリストを参照するため、これは [1, 1] を出力します。 2 つの別々のリストを作成する場合は、代わりに次のように記述する必要があります。
x = [] y = [] x.append(1) print(x) print(y)
x と y は異なるリストを参照するため、[1] と [] が表示されます。
以上が連鎖代入は Python でどのように機能しますか?また、可変オブジェクトを扱うときに潜在的な落とし穴は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。