# Objek Fungsi

Terdapat beberapa fungsi spesifik untuk fungsi Python.

`PyFunctionObject`

  Struktur C yang digunakan untuk fungsi.

PyTypeObject `PyFunction_Type`

  Ini adalah instance dari `PyTypeObject` dan mewakili jenis fungsi Python. Itu diekspos ke programmer Python sebagai `types.FunctionType`.

int `PyFunction_Check`(PyObject *o)

  Mengembalikan nilai true jika o adalah objek fungsi (memiliki tipe `PyFunction_Type`). Parameter tidak boleh `NULL`. Fungsi ini selalu sukses.

PyObject* `PyFunction_New`(PyObject *code, PyObject *globals)
  Return value: New reference.

  Mengembalikan objek fungsi baru yang terkait dengan objek kode code. global harus berupa dictionary dengan variabel global yang dapat diakses oleh fungsi tersebut.

  Docstring dan nama fungsi diambil dari objek kode. __module__ diambil dari global. Default argumen, anotasi dan penutupan diatur ke `NULL`. __qualname__ diatur ke nilai yang sama dengan nama fungsi.

PyObject* `PyFunction_NewWithQualName`(PyObject *code, PyObject *globals, PyObject *qualname)
  Return value: New reference.

  Seperti `PyFunction_New()`, tetapi juga memungkinkan pengaturan atribut `__qualname__` pada objek fungsi. qualname harus berupa objek unicode atau `NULL`; jika `NULL`, atribut `__qualname__` diatur ke nilai yang sama dengan atribut `__name__`.

  Baru pada versi 3.3.

PyObject* `PyFunction_GetCode`(PyObject *op)
  Return value: Borrowed reference.

  Mengembalikan objek kode yang terkait dengan objek fungsi op.

PyObject* `PyFunction_GetGlobals`(PyObject *op)
  Return value: Borrowed reference.

  Mengembalikan dictionary global yang terkait dengan objek fungsi op.

PyObject* `PyFunction_GetModule`(PyObject *op)
  Return value: Borrowed reference.

  Mengembalikan atribut __module__ dari objek fungsi op. Ini biasanya berupa string yang berisi nama modul, tetapi dapat diatur ke objek lain dengan kode Python.

PyObject* `PyFunction_GetDefaults`(PyObject *op)
  Return value: Borrowed reference.

  Mengembalikan nilai argumen default dari objek fungsi op. Ini bisa berupa argumen tuple atau `NULL`.

int `PyFunction_SetDefaults`(PyObject *op, PyObject *defaults)

  Menetapkan nilai argumen default untuk objek fungsi op. default harus `Py_None` atau tuple.

  Menimbulkan `SystemError` dan mengembalikan `-1` jika gagal.

PyObject* `PyFunction_GetClosure`(PyObject *op)
  Return value: Borrowed reference.

  Mengembalikan penutupan yang terkait dengan objek fungsi op. Ini bisa berupa `NULL` atau tuple objek sel.

int `PyFunction_SetClosure`(PyObject *op, PyObject *closure)

  Mengatur penutupan yang terkait dengan objek fungsi op. closure harus berupa `Py_None` atau tuple objek sel.

  Menimbulkan `SystemError` dan mengembalikan `-1` jika gagal.

PyObject *`PyFunction_GetAnnotations`(PyObject *op)
  Return value: Borrowed reference.

  Kembalikan anotasi objek fungsi op. Ini bisa berupa dictionary yang bisa berubah atau `NULL`.

int `PyFunction_SetAnnotations`(PyObject *op, PyObject *annotations)

  Mengatur anotasi untuk objek fungsi op. annotations harus berupa dictionary atau `Py_None`.

  Menimbulkan `SystemError` dan mengembalikan `-1` jika gagal.