Docstring - строка документирования. Вызывается: ```python help(abs) abs.__doc__ ``` В языках со строгой типизация (Python) с объектами определенных типов можно производить только ограниченный набор действий. ~={magenta}В Python динамическая строгая типизация.=~
Аннотация типов в Python
```python numbers: list = [] # переменная numbers хранит список languages: dict = {} # переменная languages хранит словарь temperature: tuple = (1, 2, 3) # переменная temperature хранит кортеж letters: set = set('hello') # переменная letters хранит множество ``` Для указания нескольких типов данных можно использовать ~={magenta}Union=~ ```python from typing import Union def add_numbers(a: Union[int, float], b: Union[int, float]) -> Union[int, float]: return a + b param: int | float | str ``` Можно использовать ~={magenta}Optional=~. В данном случае указывается, что список может быть None. ```python from typing import Optional num: Optional[int] = None ``` ```python def append_to_list(value, my_list: Optional[list] = None): if my_list is None: my_list = [] my_list.append(value) return my_list ``` Объект ~={magenta}Any=~ указывает на любой тип данных. ```python from typing import Optional, Any, List def append_to_list(value: Any, my_list: Optional[list] = None) -> List[Any]: if my_list is None: my_list = [] my_list.append(value) return my_list ```
Аннотация элементов кортежа
```python from typing import Tuple # Кортеж может содержать элементы разных типов words: Tuple[str, int] = ("hello", 300) # Кортеж может содержать неизвестное количество элементов типа str words: Tuple[str, ...] = ("hello", "world", '!') ```
Аннотация словарей
Здесь функция `foo` принимает один аргумент `bar`, он должен являться словарем, у которого ключи могут быть либо строкой либо целым числом, а значения могут быть либо пустыми (тип `None`) , либо строкой ```python from typing import Dict, Optional, Union def foo(bar: Dict[Union[str, int], Optional[str]]) -> bool: return True ``` ~={green}Аннотации в Python с версии 3.9=~ ```python # Замена typing word: list[str] = ['hello', 'world'] numbers: list[float] = [1.1, 3.0, 4.5] letters: set[str] = set('hello') digits: frozenset[int] = frozenset([1, 2, 2, 1]) # Замена Union param: int | float | bool # Замена Optional param: int | None = None word: str | None = None # Аннотация словарей person: dict[str, str] = { "first_name": "John", "last_name": "Doe"} # Аннотация кортежей words: tuple[str, int] = ("hello", 300) # def foo(bar: dict[str | int, str | None]) -> bool: return True ```