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.
-
type
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 Pythoncode
.
-
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()
. AppelerPyCode_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()
oueval()
sur l'objet renvoyé.
-
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, usePyFrame_GetLineNumber()
instead.For efficiently iterating over the line numbers in a code object, use the API described in PEP 626.