must be a dictionary with the global variables accessible to the function.
The function's docstring and name are retrieved from the code object.
- :func:`~function.__module__`
+ :attr:`~function.__module__`
is retrieved from *globals*. The argument defaults, annotations and closure are
set to ``NULL``. :attr:`~function.__qualname__` is set to the same value as
the code object's :attr:`~codeobject.co_qualname` field.
or ``None`` if unavailable.
* - .. attribute:: function.__defaults__
- - A :class:`tuple` containing default parameter values
+ - A :class:`tuple` containing default :term:`parameter` values
for those parameters that have defaults,
or ``None`` if no parameters have a default value.
See also: :attr:`__dict__ attributes <object.__dict__>`.
* - .. attribute:: function.__annotations__
- - A :class:`dictionary <dict>` containing annotations of parameters.
+ - A :class:`dictionary <dict>` containing annotations of
+ :term:`parameters <parameter>`.
The keys of the dictionary are the parameter names,
and ``'return'`` for the return annotation, if provided.
See also: :ref:`annotations-howto`.
* - .. attribute:: function.__kwdefaults__
- A :class:`dictionary <dict>` containing defaults for keyword-only
- parameters.
+ :term:`parameters <parameter>`.
* - .. attribute:: function.__type_params__
- A :class:`tuple` containing the :ref:`type parameters <type-params>` of
a :ref:`generic function <generic-functions>`.
+ .. versionadded:: 3.12
+
Function objects also support getting and setting arbitrary attributes, which
can be used, for example, to attach metadata to functions. Regular attribute
dot-notation is used to get and set such attributes.