# Objek Kode

Objek kode merupakan detail tingkat rendah dari implementasi CPython. Masing-masing mewakili sekumpulan kode yang dapat dieksekusi dimana belum terikat ke fungsi.

type `PyCodeObject`

  Struktur C dari objek yang digunakan untuk menggambarkan objek kode. Jenis dari tipe ini dapat berubah sewaktu-waktu.

PyTypeObject `PyCode_Type`

  Ini adalah contoh dari `PyTypeObject` mewakili tipe Python `code`.

int `PyCode_Check`(PyObject *co)

  Mengembalikan benar jika co adalah objek `code`. Fungsi ini selalu sukses.

int `PyCode_GetNumFree`(PyCodeObject *co)

  Mengembalikan jumlah variabel bebas dalam 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.

  Mengembalikan objek kode baru. Jika Anda memerlukan objek kode dummy untuk membuat bingkai, gunakan :c: func:PyCode_NewEmpty sebagai gantinya. Memanggil `PyCode_New()` secara langsung dapat mengikat Anda ke versi Python yang tepat karena seringnya perubahan definisi bytecode.

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.

  Mirip dengan `PyCode_New()`, namun dengan tambahan "posonlyargcount" untuk argumen dengan posisi .

  Baru pada versi 3.8.

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

  Mengembalikan objek kode kosong baru dengan nama file yang ditentukan, nama fungsi, dan nomor baris pertama. Adalah ilegal untuk `exec()` atau :func:` eval` menghasilkan objek kode.

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, use `PyFrame_GetLineNumber()` instead.

  For efficiently iterating over the line numbers in a code object, use the API described in PEP 626.