2013年5月7日 星期二

[Python]如何disassemble Python程式碼

大家都知道Python程式碼會被編譯成Python bytecode並執行在Python的VM上。有沒有什麼方法可以把Python程式碼變成bytecode印出來呢?Python有個disassembler module可以幫助你把Python code轉成bytecode。
以下是一段範例。
>>> import dis
>>> def foo():
...     a = 1
...     b = 2
...     c = a + b
...
>>> dis.dis(foo)
  2           0 LOAD_CONST               1 (1)
              3 STORE_FAST               0 (a)

  3           6 LOAD_CONST               2 (2)
              9 STORE_FAST               1 (b)

  4          12 LOAD_FAST                0 (a)
             15 LOAD_FAST                1 (b)
             18 BINARY_ADD
             19 STORE_FAST               2 (c)
             22 LOAD_CONST               0 (None)
             25 RETURN_VALUE
dis module中的dis method可以幫助你把Python code轉成byte code

沒有留言:

張貼留言