Code Objects

Code objects are a low-level detail of the CPython implementation.Each one represents a chunk of executable code that hasn’t yet beenbound into a function.

PyCodeObject

The C structure of the objects used to describe code objects. Thefields of this type are subject to change at any time.

PyTypeObjectPyCode_Type

This is an instance ofPyTypeObject representing the Pythoncode type.

intPyCode_Check(PyObject *co)

Return true ifco is acode object.

intPyCode_GetNumFree(PyCodeObject *co)

Return the number of free variables inco.

PyCodeObject*PyCode_New(int argcount, int kwonlyargcount, int nlocals, int stacksize, int flags,PyObject *code,PyObject *consts,PyObject *names,PyObject *varnames,PyObject *freevars,PyObject *cellvars,PyObject *filename,PyObject *name, int firstlineno,PyObject *lnotab)
Return value: New reference.

Return a new code object. If you need a dummy code object to create a frame,usePyCode_NewEmpty() instead. CallingPyCode_New() directlycan bind you to a precise Python version since the definition of the bytecodechanges often.

PyCodeObject*PyCode_NewWithPosOnlyArgs(int argcount, int posonlyargcount, int kwonlyargcount, int nlocals, int stacksize, int flags,PyObject *code,PyObject *consts,PyObject *names,PyObject *varnames,PyObject *freevars,PyObject *cellvars,PyObject *filename,PyObject *name, int firstlineno,PyObject *lnotab)
Return value: New reference.

Similar toPyCode_New(), but with an extra “posonlyargcount” for positional-only arguments.

New in version 3.8.

PyCodeObject*PyCode_NewEmpty(const char *filename, const char *funcname, int firstlineno)
Return value: New reference.

Return a new empty code object with the specified filename,function name, and first line number. It is illegal toexec() oreval() the resulting code object.