ホームページ >バックエンド開発 >Python チュートリアル >連鎖割り当ては Python でどのように機能しますか?これらは本当に複数の連続した代入と同等なのでしょうか?
Python の連鎖代入を理解する
「x = y = somefunction()」のような式に代表される、Python の連鎖代入がきっかけとなりました複数の順次代入 ("x = somefunction(); y = somefunction()") との等価性に関する議論。この問題を明確にするために、連鎖割り当ての操作を詳しく見てみましょう。
連鎖割り当てでは、左端のターゲットが最初に割り当てられます。したがって、「x = y = somefunction()」は次と同等です:
temp = somefunction() x = temp y = temp
左側のターゲットは一時変数「temp」の値を代入される前に受け取るため、この順序は重要です。右にターゲット。これは、連鎖代入関数の逆アセンブリで明らかです。
>>> def chained_assignment(): ... x = y = some_function() ... >>> import dis >>> dis.dis(chained_assignment) 2 0 LOAD_GLOBAL 0 (some_function) 3 CALL_FUNCTION 0 6 DUP_TOP 7 STORE_FAST 0 (x) 10 STORE_FAST 1 (y) 13 LOAD_CONST 0 (None) 16 RETURN_VALUE
関数によって返される値は、最初に "x" に格納され、次に "y" に格納されることに注意してください。
これ連鎖された割り当ての動作を理解するには、理解することが重要です。たとえば、「x = y = []」のような式は、「x」と「y」の両方が同じリストを参照するため、避けてください。代わりに、「x = []」と「y = []」のような個別の代入を優先して、個別のリストを作成します。
以上が連鎖割り当ては Python でどのように機能しますか?これらは本当に複数の連続した代入と同等なのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。