2.4. Optimization Disassembler

  • dis module - Built-in module for disassembling Python bytecode.

2.4.1. Programmatic Use

>>> def add(a, b):
...     return a + b
...
...
>>> from dis import dis
>>> dis(add)
  1           RESUME                   0

  2           LOAD_FAST_BORROW_LOAD_FAST_BORROW 1 (a, b)
              BINARY_OP                0 (+)
              RETURN_VALUE

2.4.2. String Use

>>> from dis import dis
>>>
>>> code = '''
... def add(a, b):
...     return a + b
... '''
>>>
>>> dis(code)
  0           RESUME                   0

  2           LOAD_CONST               0 (<code object add at 0x..., file "<dis>", line 2>)
              MAKE_FUNCTION
              STORE_NAME               0 (add)
              LOAD_CONST               1 (None)
              RETURN_VALUE

Disassembly of <code object add at 0x..., file "<dis>", line 2>:
  2           RESUME                   0

  3           LOAD_FAST_BORROW_LOAD_FAST_BORROW 1 (a, b)
              BINARY_OP                0 (+)
              RETURN_VALUE

2.4.3. Console Use

$ cat main.py
def add(a, b):
    return a + b
$ python -m dis main.py
  0           RESUME                   0

  1           LOAD_CONST               0 (<code object add at 0x102641c50, file "main.py", line 1>)
              MAKE_FUNCTION
              STORE_NAME               0 (add)
              LOAD_CONST               1 (None)
              RETURN_VALUE

Disassembly of <code object add at 0x102641c50, file "main.py", line 1>:
  1           RESUME                   0

  2           LOAD_FAST_BORROW_LOAD_FAST_BORROW 1 (a, b)
              BINARY_OP                0 (+)
              RETURN_VALUE