Code Objects

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

  • PyCodeObject

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

  • 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 版本,因为字节码的定义经常更改。

类似于PyCode_New(),但对于仅用于位置的参数具有额外的“ posonlyargcount”。

3.8 版的新Function。

  • PyCodeObject * PyCode_NewEmpty(const char *filename ,const char funcname *,int * firstlineno *)
    • 返回值:新参考.

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