Code Objects

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

  • PyCodeObject

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

  • int PyCode_Check(PyObject ** co *)

    • 如果* co *是code对象,则返回 true。
  • int PyCode_GetNumFree(PyObject ** co *)

    • 返回* co *中可用变量的数量。
  • PyCodeObject * PyCode_New(int * argcount *,int * nlocals *,int * stacksize *,int * flags *,PyObject *code PyObject consts *,PyObject *names PyObject varnames *,PyObject * * freevars *,PyObject cellvars PyObject 文件名PyObject **name ,int * firstlineno PyObject lnotab *)

    • 返回一个新的代码对象。如果您需要一个伪代码对象来创建框架,请改用PyCode_NewEmpty()。直接调用PyCode_New()可以将您绑定到精确的 Python 版本,因为字节码的定义经常更改。
  • int PyCode_NewEmpty(const char *filename ,const char funcname *,int * firstlineno *)

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