2019年10月2日 星期三

Python 數值互換如何運作

在 Python 裡,以下這段 Code 是被允許的
a = 1
b = 2
a, b = b, a  # b = 1, a = 2
其理由是 Python 會計算等號右邊的值,計算完後才將值分配到等號左邊。
可以 import dis 看其實際如何運作。
import dis

def bar(a, b, c, d):
    d, c, b, a = a, b, c, d

dis.dis(bar)
  2           0 LOAD_FAST                0 (a)
              3 LOAD_FAST                1 (b)
              6 LOAD_FAST                2 (c)
              9 LOAD_FAST                3 (d)
             12 BUILD_TUPLE              4
             15 UNPACK_SEQUENCE          4
             18 STORE_FAST               3 (d)
             21 STORE_FAST               2 (c)
             24 STORE_FAST               1 (b)
             27 STORE_FAST               0 (a)
             30 LOAD_CONST               0 (None)
             33 RETURN_VALUE    

參考資料 : stackoverflow

0 意見:

張貼留言

Popular Posts