@@ -601,7 +601,7 @@ Most of these attributes check the type of the assigned value:
601601 or ``None `` if unavailable.
602602
603603 * - .. attribute:: function.__defaults__
604- - A :class: `tuple ` containing default parameter values
604+ - A :class: `tuple ` containing default :term: ` parameter ` values
605605 for those parameters that have defaults,
606606 or ``None `` if no parameters have a default value.
607607
@@ -614,19 +614,22 @@ Most of these attributes check the type of the assigned value:
614614 See also: :attr: `__dict__ attributes <object.__dict__> `.
615615
616616 * - .. attribute:: function.__annotations__
617- - A :class: `dictionary <dict> ` containing annotations of parameters.
617+ - A :class: `dictionary <dict> ` containing annotations of
618+ :term: `parameters <parameter> `.
618619 The keys of the dictionary are the parameter names,
619620 and ``'return' `` for the return annotation, if provided.
620621 See also: :ref: `annotations-howto `.
621622
622623 * - .. attribute:: function.__kwdefaults__
623624 - A :class: `dictionary <dict> ` containing defaults for keyword-only
624- parameters.
625+ :term: ` parameters <parameter> ` .
625626
626627 * - .. attribute:: function.__type_params__
627628 - A :class: `tuple ` containing the :ref: `type parameters <type-params >` of
628629 a :ref: `generic function <generic-functions >`.
629630
631+ .. versionadded :: 3.12
632+
630633Function objects also support getting and setting arbitrary attributes, which
631634can be used, for example, to attach metadata to functions. Regular attribute
632635dot-notation is used to get and set such attributes.
0 commit comments