ホームページ  >  記事  >  バックエンド開発  >  連鎖割り当ては Python でどのように機能しますか?これらは本当に複数の連続した代入と同等なのでしょうか?

連鎖割り当ては Python でどのように機能しますか?これらは本当に複数の連続した代入と同等なのでしょうか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-28 03:07:311002ブラウズ

How do chained assignments work in Python? Are they truly equivalent to multiple sequential assignments?

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 サイトの他の関連記事を参照してください。

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