| Built-in types |
| ============== |
| |
| This chapter introduces some commonly used built-in types. We will |
| cover many other kinds of types later. |
| |
| Simple types |
| ............ |
| |
| Here are examples of some common built-in types: |
| |
| ====================== =============================== |
| Type Description |
| ====================== =============================== |
| ``int`` integer |
| ``float`` floating point number |
| ``bool`` boolean value (subclass of ``int``) |
| ``str`` text, sequence of unicode codepoints |
| ``bytes`` 8-bit string, sequence of byte values |
| ``object`` an arbitrary object (``object`` is the common base class) |
| ====================== =============================== |
| |
| All built-in classes can be used as types. |
| |
| Any type |
| ........ |
| |
| If you can't find a good type for some value, you can always fall back |
| to ``Any``: |
| |
| ====================== =============================== |
| Type Description |
| ====================== =============================== |
| ``Any`` dynamically typed value with an arbitrary type |
| ====================== =============================== |
| |
| The type ``Any`` is defined in the :py:mod:`typing` module. |
| See :ref:`dynamic-typing` for more details. |
| |
| Generic types |
| ............. |
| |
| In Python 3.9 and later, built-in collection type objects support |
| indexing: |
| |
| ====================== =============================== |
| Type Description |
| ====================== =============================== |
| ``list[str]`` list of ``str`` objects |
| ``tuple[int, int]`` tuple of two ``int`` objects (``tuple[()]`` is the empty tuple) |
| ``tuple[int, ...]`` tuple of an arbitrary number of ``int`` objects |
| ``dict[str, int]`` dictionary from ``str`` keys to ``int`` values |
| ``Iterable[int]`` iterable object containing ints |
| ``Sequence[bool]`` sequence of booleans (read-only) |
| ``Mapping[str, int]`` mapping from ``str`` keys to ``int`` values (read-only) |
| ``type[C]`` type object of ``C`` (``C`` is a class/type variable/union of types) |
| ====================== =============================== |
| |
| The type ``dict`` is a *generic* class, signified by type arguments within |
| ``[...]``. For example, ``dict[int, str]`` is a dictionary from integers to |
| strings and ``dict[Any, Any]`` is a dictionary of dynamically typed |
| (arbitrary) values and keys. ``list`` is another generic class. |
| |
| ``Iterable``, ``Sequence``, and ``Mapping`` are generic types that correspond to |
| Python protocols. For example, a ``str`` object or a ``list[str]`` object is |
| valid when ``Iterable[str]`` or ``Sequence[str]`` is expected. |
| You can import them from :py:mod:`collections.abc` instead of importing from |
| :py:mod:`typing` in Python 3.9. |
| |
| See :ref:`generic-builtins` for more details, including how you can |
| use these in annotations also in Python 3.7 and 3.8. |
| |
| These legacy types defined in :py:mod:`typing` are needed if you need to support |
| Python 3.8 and earlier: |
| |
| ====================== =============================== |
| Type Description |
| ====================== =============================== |
| ``List[str]`` list of ``str`` objects |
| ``Tuple[int, int]`` tuple of two ``int`` objects (``Tuple[()]`` is the empty tuple) |
| ``Tuple[int, ...]`` tuple of an arbitrary number of ``int`` objects |
| ``Dict[str, int]`` dictionary from ``str`` keys to ``int`` values |
| ``Iterable[int]`` iterable object containing ints |
| ``Sequence[bool]`` sequence of booleans (read-only) |
| ``Mapping[str, int]`` mapping from ``str`` keys to ``int`` values (read-only) |
| ``Type[C]`` type object of ``C`` (``C`` is a class/type variable/union of types) |
| ====================== =============================== |
| |
| ``List`` is an alias for the built-in type ``list`` that supports |
| indexing (and similarly for ``dict``/``Dict`` and |
| ``tuple``/``Tuple``). |
| |
| Note that even though ``Iterable``, ``Sequence`` and ``Mapping`` look |
| similar to abstract base classes defined in :py:mod:`collections.abc` |
| (formerly ``collections``), they are not identical, since the latter |
| don't support indexing prior to Python 3.9. |