GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Cell Objects
  • File Objects
  • Report a Bug
  • Show Source
  • index
  • modules
  • Python
  • 3.10.22 Documentation
  • Python/C API Reference Manual
  • Concrete Objects Layer
  • Code Objects

This view

  • Original page
  • New address

GeezerVison is showing docs.python.org — Code Objects — Python 3.10.22 documentation

This document is for an old version of Python that is no longer supported. You should upgrade, and read the Python documentation for the current stable release.

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.

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 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.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.