Docstrings
| Конструкция | Назначение | Пример |
|---|---|---|
"""текст""" |
Документирующая строка | def f():\n """Описание.""" |
:param имя: |
Описание параметра (reST) | :param name: Имя пользователя. |
:return: |
Описание возвращаемого значения | :return: Приветствие. |
help(obj) |
Вывод справки по объекту | help(str) |
obj.__doc__ |
Строка docstring | print(add.__doc__) |
Синтаксис аннотаций
| Запись | Значение | Пример |
|---|---|---|
x: int |
Переменная должна быть int | age: int = 25 |
def f(a: int) -> str: |
Параметр int, результат str | def repeat(n: int) -> str: |
list[int] |
Список целых чисел | nums: list[int] = [1, 2, 3] |
tuple[str, int] |
Кортеж фиксированной длины | pair: tuple[str, int] = ("a", 1) |
tuple[int, ...] |
Кортеж произвольной длины из int | coords: tuple[int, ...] |
dict[str, int] |
Словарь: ключи str, значения int | counts: dict[str, int] |
set[str] |
Множество строк | tags: set[str] = {"a", "b"} |
frozenset[int] |
Неизменяемое множество int | ids: frozenset[int] |
-> None |
Функция ничего не возвращает | def log(msg: str) -> None: |
Модуль typing
| Имя | Значение | Пример |
|---|---|---|
Any |
Любой тип | data: Any |
Union[A, B] |
A или B | value: Union[int, float] |
A | B |
Современная запись Union (Python 3.10+) | value: int | float |
Optional[T] |
T или None | name: Optional[str] |
T | None |
Современная запись Optional | name: str | None |
Callable[[A, B], R] |
Функция с параметрами A, B и результатом R | fn: Callable[[int, int], int] |
List[int] |
Старый стиль списка int (до Python 3.9) | from typing import List |
Dict[str, int] |
Старый стиль словаря | from typing import Dict |
Изменяемость и копирование
| Категория | Типы | Поведение в функции |
|---|---|---|
| Неизменяемые | int, float, bool, str, tuple, frozenset |
Изменение создаёт новый объект; оригинал не меняется |
| Изменяемые | list, dict, set |
Изменение влияет на оригинальный объект |
lst.copy() |
list, dict |
Поверхностная копия |
copy.deepcopy(x) |
любые вложенные объекты | Глубокая копия всех уровней |