Built-in types - mypy 1.19.0 documentation (original) (raw)
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 typing module. See Dynamically typed code 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 collections.abc instead of importing fromtyping in Python 3.9.
See Using 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 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 andtuple/Tuple).
Note that even though Iterable, Sequence and Mapping look similar to abstract base classes defined in collections.abc(formerly collections), they are not identical, since the latter don’t support indexing prior to Python 3.9.