We're back after a server migration that caused effbot.org to fall over a bit harder than expected. Expect some glitches.

The dis module

This is the Python disassembler. It converts bytecodes to a format that is slightly more appropriate for human consumption.

You can run the disassembler from the command line. It compiles the given script, and prints the disassembled byte codes to the terminal.

$ dis.py hello.py

          0 SET_LINENO       0

          3 SET_LINENO       1
          6 LOAD_CONST       0 ('hello again, and welcome to the show')
          9 PRINT_ITEM
         10 PRINT_NEWLINE
         11 LOAD_CONST       1 (None)
         14 RETURN_VALUE

You can also use dis as a module. The dis function takes a class, method, function, or code object as its single argument.

Example: Using the dis module
# File: dis-example-1.py

import dis

def procedure():
    print 'hello'

dis.dis(procedure)

          0 SET_LINENO          3

          3 SET_LINENO          4
          6 LOAD_CONST          1 ('hello')
          9 PRINT_ITEM
         10 PRINT_NEWLINE
         11 LOAD_CONST          0 (None)
         14 RETURN_VALUE