Code objects represent byte-compiled executable Python code, or bytecode. The difference between a code object and a function object is that the function object contains an explicit reference to the function's globals (the module in which it was defined), while a code object contains no context; also the default argument values are stored in the function object, not in the code object (because they represent values calculated at run-time). Unlike function objects, code objects are immutable and contain no references (directly or indirectly) to mutable objects.
Special read-only attributes:
The following flag bits are defined for co_flags: bit
0x04 is set if the function uses the "*arguments"
syntax to accept an arbitrary number of positional arguments; bit
0x08 is set if the function uses the "**keywords"
syntax to accept arbitrary keyword arguments; bit 0x20
is set if the function is a generator.
Future feature declarations ("from __future__ import division")
also use bits in co_flags to indicate whether a code
object was compiled with a particular feature enabled: bit
0x2000 is set if the function was compiled with future
division enabled; bits 0x10 and 0x1000
were used in earlier versions of Python.
Other bits in co_flags are reserved for internal use.
If a code object represents a function, the first item in co_consts is the documentation string of the function, or None if undefined.