Objets code

Les objets Code sont spécifiques à l'implémentation bas niveau de CPython. Chacun d'eux représente une partie de code exécutable, qui n'a pas encore été lié dans une fonction.

PyCodeObject

La structure C utilisée pour décrire les objets Code. Les attributs de cette structure sont sujets à changer à tout moment.

PyTypeObject PyCode_Type

C'est une instance de PyTypeObject représentant le type Python code.

int PyCode_Check(PyObject *co)

Renvoie vrai si co est un objet code.

int PyCode_GetNumFree(PyCodeObject *co)

Renvoie le nombre de variables libres dans 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.

Renvoie un nouvel objet code. Si vous avez besoin d'un objet code factice pour créer une frame, utilisez plutôt PyCode_NewEmpty(). Appeler PyCode_New() peut vous lier directement à une version spécifique de Python, le bytecode étant sujet à modifications.

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.

Nouveau dans la version 3.8.

PyCodeObject* PyCode_NewEmpty(const char *filename, const char *funcname, int firstlineno)
Return value: New reference.

Renvoie un nouvel objet code avec le nom de fichier, le nom de fonction, et le numéro de première ligne donnés. Il n'est pas permis d'utiliser exec() ou eval() sur l'objet renvoyé.