function.rst 3.16 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12
.. highlightlang:: c

.. _function-objects:

Function Objects
----------------

.. index:: object: function

There are a few functions specific to Python functions.


13
.. c:type:: PyFunctionObject
14 15 16 17

   The C structure used for functions.


18
.. c:var:: PyTypeObject PyFunction_Type
19 20 21

   .. index:: single: MethodType (in module types)

22
   This is an instance of :c:type:`PyTypeObject` and represents the Python function
23 24 25
   type.  It is exposed to Python programmers as ``types.FunctionType``.


26
.. c:function:: int PyFunction_Check(PyObject *o)
27

28
   Return true if *o* is a function object (has type :c:data:`PyFunction_Type`).
29 30 31
   The parameter must not be *NULL*.


32
.. c:function:: PyObject* PyFunction_New(PyObject *code, PyObject *globals)
33 34 35 36 37 38 39 40

   Return a new function object associated with the code object *code*. *globals*
   must be a dictionary with the global variables accessible to the function.

   The function's docstring, name and *__module__* are retrieved from the code
   object, the argument defaults and closure are set to *NULL*.


41 42
.. c:function:: PyObject* PyFunction_NewWithQualName(PyObject *code, PyObject *globals, PyObject *qualname)

43
   As :c:func:`PyFunction_New`, but also allows setting the function object's
44 45 46 47 48 49 50
   ``__qualname__`` attribute.  *qualname* should be a unicode object or NULL;
   if NULL, the ``__qualname__`` attribute is set to the same value as its
   ``__name__`` attribute.

   .. versionadded:: 3.3


51
.. c:function:: PyObject* PyFunction_GetCode(PyObject *op)
52 53 54 55

   Return the code object associated with the function object *op*.


56
.. c:function:: PyObject* PyFunction_GetGlobals(PyObject *op)
57 58 59 60

   Return the globals dictionary associated with the function object *op*.


61
.. c:function:: PyObject* PyFunction_GetModule(PyObject *op)
62 63 64 65 66 67

   Return the *__module__* attribute of the function object *op*. This is normally
   a string containing the module name, but can be set to any other object by
   Python code.


68
.. c:function:: PyObject* PyFunction_GetDefaults(PyObject *op)
69 70 71 72 73

   Return the argument default values of the function object *op*. This can be a
   tuple of arguments or *NULL*.


74
.. c:function:: int PyFunction_SetDefaults(PyObject *op, PyObject *defaults)
75 76 77 78 79 80 81

   Set the argument default values for the function object *op*. *defaults* must be
   *Py_None* or a tuple.

   Raises :exc:`SystemError` and returns ``-1`` on failure.


82
.. c:function:: PyObject* PyFunction_GetClosure(PyObject *op)
83 84 85 86 87

   Return the closure associated with the function object *op*. This can be *NULL*
   or a tuple of cell objects.


88
.. c:function:: int PyFunction_SetClosure(PyObject *op, PyObject *closure)
89 90 91 92 93

   Set the closure associated with the function object *op*. *closure* must be
   *Py_None* or a tuple of cell objects.

   Raises :exc:`SystemError` and returns ``-1`` on failure.
94 95


96
.. c:function:: PyObject *PyFunction_GetAnnotations(PyObject *op)
97 98 99 100 101

   Return the annotations of the function object *op*. This can be a
   mutable dictionary or *NULL*.


102
.. c:function:: int PyFunction_SetAnnotations(PyObject *op, PyObject *annotations)
103 104 105

   Set the annotations for the function object *op*. *annotations*
   must be a dictionary or *Py_None*.
106 107

   Raises :exc:`SystemError` and returns ``-1`` on failure.