元組 (a, b) = (b, a) 中的成員交換如何在內部工作?
元組中的成員交換如何進行?元組是透過一系列堆疊操作來執行的,而不使用臨時變數。 Python 將右側表達式與左側賦值分開。
對於具有 2 或 3 個項目的元組:
計算右側,將 [a, b] 壓入堆疊。 ROT_TWO 操作碼交換頂部兩個位置,導致 [b, a] 位於頂部。然後 STORE_FAST 操作碼將這些值儲存在左側變數中,而不使用暫存變數。
對於具有 4 個或更多項目的元組:
建立顯式元組從右邊的表達式。 UNPACK_SEQUENCE 操作碼將元組從堆疊中彈出,並以相反的順序將其元素推回堆疊中。隨後的 STORE_FAST 操作將這些值儲存在左側變數中。
針對2 和3 名稱分配的優化:
窺視孔優化取代了低效的BUILD_TUPLE/UNPACK_SEQUENCE與更快的ROT_TWO/ROT_THREE 操作碼組合,用於2 和3 個名稱分配。
以上是Python 內部元組交換如何運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!