傳統語言的「暫存變數」
在大多數程式語言中,如果你想把變數 a(值為 5)和變數 b(值為 10)的內容互相交換,你不能直接寫 a = b; b = a(這樣 a 變成 10 後,b = a 就會讓 b 也變成 10,原本 5 的資料就遺失了)。因此你必須引進第三個臨時暫存變數 temp:
Cint temp = a; a = b; b = temp; |
Python 的一行搞定
在 Python 中,你只需要一行魔法般的代碼:
Pythona, b = b, a |
底層運作原理(Tuple Unpacking)
這並不是語法糖那麼簡單,Python 在底層其實運用了元組(Tuple)的封裝與拆包機制:
- 右側封裝(Packing):Python 會先將等號右邊的 b, a 放入記憶體中,自動打包成一個無名的元組 (b, a)。此時裡面的值已經被固定下來(例如 (10, 5))。
- 左側拆包(Unpacking):接著,Python 會把這個元組內的位置,依序指派給等號左邊的變數 a 和 b。
由於這個過程是在同一個指令週期中透過 CPython 解譯器內部一次性完成,因此完全不需要工程師手動去寫暫存變數,不僅程式碼極其優雅,執行效率也非常好。









