# 函式物件 (Function Objects)

這有一些特用於 Python 函式的函式。

type PyFunctionObject

  用於函式的 C 結構。

PyTypeObject PyFunction_Type

  這是個 `PyTypeObject` 的實例，且代表了 Python 函式型別，Python 程式設計者可透過 `types.FunctionType` 使用它。

int PyFunction_Check(PyObject *o)

  如果 o 是個函式物件（擁有 `PyFunction_Type` 的型別）則回傳 true。參數必須不為 `NULL`。此函式必能成功執行。

PyObject *PyFunction_New(PyObject *code, PyObject *globals)
  回傳值：新的參照。

  回傳一個與程式碼物件 code 相關聯的函式物件。globals 必須是一個帶有函式能夠存取的全域變數的字典。

  函数的文档字符串和名称是从代码对象中提取的。 `__module__` 是从 globals 中提取的。 参数 defaults, annotations 和 closure 被设为 `NULL`。 `__qualname__` 被设为与代码对象的 `co_qualname` 字段相同的值。

PyObject *PyFunction_NewWithQualName(PyObject *code, PyObject *globals, PyObject *qualname)
  回傳值：新的參照。

  类似 `PyFunction_New()`，但还允许设置函数对象的 `__qualname__` 属性。 qualname 应当是一个 unicode 对象或为 `NULL`；如为 `NULL`，则 `__qualname__` 属性会被设为与代码对象的 `co_qualname` 字段相同的值。

  在 3.3 版新加入.

PyObject *PyFunction_GetCode(PyObject *op)
  回傳值：借用參照。

  回傳與程式碼物件相關的函式物件 op。

PyObject *PyFunction_GetGlobals(PyObject *op)
  回傳值：借用參照。

  回傳與全域函式字典相關的函式物件 op。

PyObject *PyFunction_GetModule(PyObject *op)
  回傳值：借用參照。

  向 函数对象 op 的 `__module__` 属性返回一个 borrowed reference。 该值可以为 NULL。

  这通常为一个包含模块名称的 `字符串`，但可以通过 Python 代码设为任何其他对象。

PyObject *PyFunction_GetDefaults(PyObject *op)
  回傳值：借用參照。

  回傳函式物件 op 的引數預設值，這可以是一個含有多個引數的 tuple（元組）或 `NULL`。

int PyFunction_SetDefaults(PyObject *op, PyObject *defaults)

  設定函式物件 op 的引數預設值。defaults 必須是 `Py_None` 或一個 tuple。

  引發 `SystemError` 且在失敗時回傳 `-1`。

PyObject *PyFunction_GetClosure(PyObject *op)
  回傳值：借用參照。

  回傳與函式物件 op 相關聯的閉包，這可以是個 `NULL` 或是一個包含 cell 物件的 tuple。

int PyFunction_SetClosure(PyObject *op, PyObject *closure)

  設定與函式物件 op 相關聯的閉包，closure 必須是 `Py_None` 或是一個包含 cell 物件的 tuple。

  引發 `SystemError` 且在失敗時回傳 `-1`。

PyObject *PyFunction_GetAnnotations(PyObject *op)
  回傳值：借用參照。

  回傳函式物件 op 的標註，這可以是一個可變動的 (mutable) 字典或 `NULL`。

int PyFunction_SetAnnotations(PyObject *op, PyObject *annotations)

  設定函式物件 op 的標註，annotations 必須是一個字典或 `Py_None`。

  引發 `SystemError` 且在失敗時回傳 `-1`。