鍊式賦值,例如x = y = somefunction(),可能會因為偏離預期的求值順序而令人困惑。與 x = somefunction() 和 y = somefunction() 依序執行的假設相反,鍊式賦值遵循不同的模式。
在鍊式賦值中,最左邊的目標變數先被賦值。這表示以下程式碼:
<code class="python">x = y = somefunction()</code>
相當於:
<code class="python">temp = somefunction() x = temp y = temp</code>
如您所見,somefunction() 傳回的值會先儲存在暫存變數(temp ),然後再指派給x 和y。
需要注意的是,在鍊式分配中,相同的物件總是會分配給每個目標。在處理清單等可變物件時,這可能會導致意想不到的後果。例如,以下代碼:
<code class="python">x = y = []</code>
將相同的列表物件指派給 x 和 y。這意味著對 x 所做的任何修改也將反映在 y 中。
要避免此問題,請務必為可變變數建立不同的對象,如以下正確範例所示:
<code class="python">x = [] y = []</code>
以上是以下是一些基於問題的標題,它們抓住了所提供文章的精髓: * Python 中的鍊式賦值:為什麼 `x = y = somefunction()` 會這樣運作? * Python 如何處理 Chai的詳細內容。更多資訊請關注PHP中文網其他相關文章!