:exc:`StopAsyncIteration` exception. Introduced by :pep:`492`.
attribute
- A value associated with an object which is referenced by name using
- dotted expressions. For example, if an object *o* has an attribute
+ A value associated with an object which is usually referenced by name
+ using dotted expressions.
+ For example, if an object *o* has an attribute
*a* it would be referenced as *o.a*.
+ It is possible to give an object an attribute whose name is not an
+ identifier as defined by :ref:`identifiers`, for example using
+ :func:`setattr`, if the object allows it.
+ Such an attribute will not be accessible using a dotted expression,
+ and would instead need to be retrieved with :func:`getattr`.
+
awaitable
An object that can be used in an :keyword:`await` expression. Can be
a :term:`coroutine` or an object with an :meth:`__await__` method.
string. The string must be the name of one of the object's attributes. The
function deletes the named attribute, provided the object allows it. For
example, ``delattr(x, 'foobar')`` is equivalent to ``del x.foobar``.
+ *name* need not be a Python identifier (see :func:`setattr`).
.. _func-dict:
value of that attribute. For example, ``getattr(x, 'foobar')`` is equivalent to
``x.foobar``. If the named attribute does not exist, *default* is returned if
provided, otherwise :exc:`AttributeError` is raised.
+ *name* need not be a Python identifier (see :func:`setattr`).
.. note::
object allows it. For example, ``setattr(x, 'foobar', 123)`` is equivalent to
``x.foobar = 123``.
+ *name* need not be a Python identifier as defined in :ref:`identifiers`
+ unless the object chooses to enforce that, for example in a custom
+ :meth:`~object.__getattribute__` or via :attr:`~object.__slots__`.
+ An attribute whose name is not an identifier will not be accessible using
+ the dot notation, but is accessible through :func:`getattr` etc..
+
.. note::
Since :ref:`private name mangling <private-name-mangling>` happens at