17
簡單和短的問題。在Python中交換兩個變量非常簡單:a, b = b, a
。沒關係,我沒有異議:)但我感興趣的是它如何在內部工作?它自己創造了一些臨時變量還是更有趣(我敢打賭)?變量交換如何在內部工作?
簡單和短的問題。在Python中交換兩個變量非常簡單:a, b = b, a
。沒關係,我沒有異議:)但我感興趣的是它如何在內部工作?它自己創造了一些臨時變量還是更有趣(我敢打賭)?變量交換如何在內部工作?
Python源代碼在執行前轉換爲bytecode。你可以看到掉在內部是如何工作的,通過使用反彙編dis
看到字節碼是什麼樣子:
import dis
>>> def f(a,b): a, b = b, a
>>> dis.dis(f)
1 0 LOAD_FAST 1 (b)
3 LOAD_FAST 0 (a)
6 ROT_TWO
7 STORE_FAST 0 (a)
10 STORE_FAST 1 (b)
13 LOAD_CONST 0 (None)
16 RETURN_VALUE
簡單來說,它推動在堆棧上的a和b的值,旋轉(掉期)的頂部兩個元素,然後再次彈出這些值。
參見:
真棒!所以技巧是ROT_TWO ...非常感謝! – 2011-12-21 09:05:52