17db96d56Sopenharmony_ci.. highlight:: c 27db96d56Sopenharmony_ci 37db96d56Sopenharmony_ci.. _function-objects: 47db96d56Sopenharmony_ci 57db96d56Sopenharmony_ciFunction Objects 67db96d56Sopenharmony_ci---------------- 77db96d56Sopenharmony_ci 87db96d56Sopenharmony_ci.. index:: pair: object; function 97db96d56Sopenharmony_ci 107db96d56Sopenharmony_ciThere are a few functions specific to Python functions. 117db96d56Sopenharmony_ci 127db96d56Sopenharmony_ci 137db96d56Sopenharmony_ci.. c:type:: PyFunctionObject 147db96d56Sopenharmony_ci 157db96d56Sopenharmony_ci The C structure used for functions. 167db96d56Sopenharmony_ci 177db96d56Sopenharmony_ci 187db96d56Sopenharmony_ci.. c:var:: PyTypeObject PyFunction_Type 197db96d56Sopenharmony_ci 207db96d56Sopenharmony_ci .. index:: single: MethodType (in module types) 217db96d56Sopenharmony_ci 227db96d56Sopenharmony_ci This is an instance of :c:type:`PyTypeObject` and represents the Python function 237db96d56Sopenharmony_ci type. It is exposed to Python programmers as ``types.FunctionType``. 247db96d56Sopenharmony_ci 257db96d56Sopenharmony_ci 267db96d56Sopenharmony_ci.. c:function:: int PyFunction_Check(PyObject *o) 277db96d56Sopenharmony_ci 287db96d56Sopenharmony_ci Return true if *o* is a function object (has type :c:data:`PyFunction_Type`). 297db96d56Sopenharmony_ci The parameter must not be ``NULL``. This function always succeeds. 307db96d56Sopenharmony_ci 317db96d56Sopenharmony_ci 327db96d56Sopenharmony_ci.. c:function:: PyObject* PyFunction_New(PyObject *code, PyObject *globals) 337db96d56Sopenharmony_ci 347db96d56Sopenharmony_ci Return a new function object associated with the code object *code*. *globals* 357db96d56Sopenharmony_ci must be a dictionary with the global variables accessible to the function. 367db96d56Sopenharmony_ci 377db96d56Sopenharmony_ci The function's docstring and name are retrieved from the code object. *__module__* 387db96d56Sopenharmony_ci is retrieved from *globals*. The argument defaults, annotations and closure are 397db96d56Sopenharmony_ci set to ``NULL``. *__qualname__* is set to the same value as the code object's 407db96d56Sopenharmony_ci ``co_qualname`` field. 417db96d56Sopenharmony_ci 427db96d56Sopenharmony_ci 437db96d56Sopenharmony_ci.. c:function:: PyObject* PyFunction_NewWithQualName(PyObject *code, PyObject *globals, PyObject *qualname) 447db96d56Sopenharmony_ci 457db96d56Sopenharmony_ci As :c:func:`PyFunction_New`, but also allows setting the function object's 467db96d56Sopenharmony_ci ``__qualname__`` attribute. *qualname* should be a unicode object or ``NULL``; 477db96d56Sopenharmony_ci if ``NULL``, the ``__qualname__`` attribute is set to the same value as the 487db96d56Sopenharmony_ci code object's ``co_qualname`` field. 497db96d56Sopenharmony_ci 507db96d56Sopenharmony_ci .. versionadded:: 3.3 517db96d56Sopenharmony_ci 527db96d56Sopenharmony_ci 537db96d56Sopenharmony_ci.. c:function:: PyObject* PyFunction_GetCode(PyObject *op) 547db96d56Sopenharmony_ci 557db96d56Sopenharmony_ci Return the code object associated with the function object *op*. 567db96d56Sopenharmony_ci 577db96d56Sopenharmony_ci 587db96d56Sopenharmony_ci.. c:function:: PyObject* PyFunction_GetGlobals(PyObject *op) 597db96d56Sopenharmony_ci 607db96d56Sopenharmony_ci Return the globals dictionary associated with the function object *op*. 617db96d56Sopenharmony_ci 627db96d56Sopenharmony_ci 637db96d56Sopenharmony_ci.. c:function:: PyObject* PyFunction_GetModule(PyObject *op) 647db96d56Sopenharmony_ci 657db96d56Sopenharmony_ci Return a :term:`borrowed reference` to the *__module__* attribute of the 667db96d56Sopenharmony_ci function object *op*. It can be *NULL*. 677db96d56Sopenharmony_ci 687db96d56Sopenharmony_ci This is normally a string containing the module name, but can be set to any 697db96d56Sopenharmony_ci other object by Python code. 707db96d56Sopenharmony_ci 717db96d56Sopenharmony_ci 727db96d56Sopenharmony_ci.. c:function:: PyObject* PyFunction_GetDefaults(PyObject *op) 737db96d56Sopenharmony_ci 747db96d56Sopenharmony_ci Return the argument default values of the function object *op*. This can be a 757db96d56Sopenharmony_ci tuple of arguments or ``NULL``. 767db96d56Sopenharmony_ci 777db96d56Sopenharmony_ci 787db96d56Sopenharmony_ci.. c:function:: int PyFunction_SetDefaults(PyObject *op, PyObject *defaults) 797db96d56Sopenharmony_ci 807db96d56Sopenharmony_ci Set the argument default values for the function object *op*. *defaults* must be 817db96d56Sopenharmony_ci ``Py_None`` or a tuple. 827db96d56Sopenharmony_ci 837db96d56Sopenharmony_ci Raises :exc:`SystemError` and returns ``-1`` on failure. 847db96d56Sopenharmony_ci 857db96d56Sopenharmony_ci 867db96d56Sopenharmony_ci.. c:function:: PyObject* PyFunction_GetClosure(PyObject *op) 877db96d56Sopenharmony_ci 887db96d56Sopenharmony_ci Return the closure associated with the function object *op*. This can be ``NULL`` 897db96d56Sopenharmony_ci or a tuple of cell objects. 907db96d56Sopenharmony_ci 917db96d56Sopenharmony_ci 927db96d56Sopenharmony_ci.. c:function:: int PyFunction_SetClosure(PyObject *op, PyObject *closure) 937db96d56Sopenharmony_ci 947db96d56Sopenharmony_ci Set the closure associated with the function object *op*. *closure* must be 957db96d56Sopenharmony_ci ``Py_None`` or a tuple of cell objects. 967db96d56Sopenharmony_ci 977db96d56Sopenharmony_ci Raises :exc:`SystemError` and returns ``-1`` on failure. 987db96d56Sopenharmony_ci 997db96d56Sopenharmony_ci 1007db96d56Sopenharmony_ci.. c:function:: PyObject *PyFunction_GetAnnotations(PyObject *op) 1017db96d56Sopenharmony_ci 1027db96d56Sopenharmony_ci Return the annotations of the function object *op*. This can be a 1037db96d56Sopenharmony_ci mutable dictionary or ``NULL``. 1047db96d56Sopenharmony_ci 1057db96d56Sopenharmony_ci 1067db96d56Sopenharmony_ci.. c:function:: int PyFunction_SetAnnotations(PyObject *op, PyObject *annotations) 1077db96d56Sopenharmony_ci 1087db96d56Sopenharmony_ci Set the annotations for the function object *op*. *annotations* 1097db96d56Sopenharmony_ci must be a dictionary or ``Py_None``. 1107db96d56Sopenharmony_ci 1117db96d56Sopenharmony_ci Raises :exc:`SystemError` and returns ``-1`` on failure. 112