Python 中的多重賦值和求值順序
在Python 中,多重賦值是一種常見的做法,即同時為多個變數賦值。然而,此類作業中的求值順序可能會產生意想不到的後果。
問題
考慮以下程式碼:
>>> x = 1 >>> y = 2 >>> x, y = y, x + y # Multiple assignment
在此之後賦值時,x 和 y的值為:
>>> x 2 >>> y 3
這與人們的預期不同如果賦值是單獨完成的:
>>> x = 1 >>> y = 2 >>> x = y # Assign x to the current value of y >>> y = x + y # Assign y to the sum of x and y >>> x 2 >>> y 4
解釋
由於賦值🎜>由於賦值語句中的求值順序而產生差異。在 Python 中,在變數實際賦值之前,先計算賦值的右側。
在第一個例子中,當我們賦值x, y = y, x y 時,右側-手邊的評估如下:
ham = y # Where ham = 2 spam = x + y # Where spam = 1 + 2 = 3
然後,x 被分配為ham 的值(2),y 被指派為spam 的值(3)。這就是為什麼我們得到結果 x = 2 和 y = 3。
相較之下,在第二個例子中,x 首先被賦予 y 的值,即 2。然後,y 被賦予以下總和: x (2) 和 y (2),結果為 4。
以上是Python 的多重賦值如何影響變數求值順序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!