Code Objects

代码对象是CPython实现的低级细节。每个代表一个尚未被绑定到函数中的可执行代码块。

PyCodeObject

用于描述代码对象的对象的C结构。此类型的字段可随时更改。

PyTypeObject PyCode_Type

这是PyTypeObject的实例,表示Python code类型。

int PyCode_Check(PyObject *co)

如果co 是code对象,则返回true。

int PyCode_GetNumFree(PyCodeObject *co)

返回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)

返回一个新的代码对象。如果您需要一个虚拟代码对象来创建一个框架,请改用PyCode_NewEmpty()调用PyCode_New()可以直接绑定到精确的Python版本,因为字节码的定义经常变化。

PyCodeObject* PyCode_NewEmpty(const char *filename, const char *funcname, int firstlineno)

返回具有指定文件名,函数名和第一行号的新的空代码对象。exec()eval()是生成的代码对象是非法的。