GeezerVison is showing docs.python.org — Code Objects — Python 3.10.22 documentation
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 been
bound into a function.
-
type
PyCodeObject¶
The C structure of the objects used to describe code objects. The
fields of this type are subject to change at any time.
-
PyTypeObject
PyCode_Type¶
This is an instance of PyTypeObject representing the Python
code type.
-
int
PyCode_Check(PyObject *co)¶
Return true if co is a code object. This function always succeeds.
-
int
PyCode_GetNumFree(PyCodeObject *co)¶
Return the number of free variables in co.
-
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,
use PyCode_NewEmpty() instead. Calling PyCode_New() directly
can bind you to a precise Python version since the definition of the bytecode
changes 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 to PyCode_New(), but with an extra “posonlyargcount” for positional-only arguments.
-
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 to
exec() or eval() the resulting code object.
-
int
PyCode_Addr2Line(PyCodeObject *co, int byte_offset)¶
Return the line number of the instruction that occurs on or before byte_offset and ends after it.
If you just need the line number of a frame, use PyFrame_GetLineNumber() instead.
For efficiently iterating over the line numbers in a code object, use the API described in PEP 626.
©
Copyright
2001-2026, Python Software Foundation.
This page is licensed under the Python Software Foundation License Version 2.
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
See History and License for more information.
The Python Software Foundation is a non-profit corporation.
Please donate.
Last updated on Oct 11, 2026.
Found a bug?
Created using Sphinx 3.4.3.
|