Модуль Typing Python

Модуль typing предоставляет подсказки типов для аргументов функций, значений возврата и структур данных.

from typing import TypedDict

Подсказки типов не меняют то, как Python выполняет программу. Они помогают редакторам, линтерам и читателям понимать, какие значения ожидает код.

Аннотация сигнатур функций

def greet(name: str) -> str:
    return f'Hello {name}'

print(greet('Ada'))
Hello Ada

Аннотация name: str означает, что функция ожидает строку. Аннотация -> str означает, что она должна вернуть строку.

Часто используемые типы коллекций

Используйте подсказки типов, чтобы описать форму данных.

def average(values: list[float]) -> float:
    return sum(values) / len(values)

print(average([1.0, 2.0, 3.0]))
2.0

Аннотации вида list[str] требуют Python 3.9 или новее.

Необязательные значения

Используйте | None, когда значение может отсутствовать.

def find_user(user_id: int) -> str | None:
    if user_id == 1:
        return 'Ada'
    return None

print(find_user(1))
print(find_user(2))
Ada
None

Синтаксис объединения X | Y требует Python 3.10 или новее.

TypedDict

TypedDict описывает объекты, похожие на словари, с фиксированными ключами.

from typing import TypedDict

class User(TypedDict):
    name: str
    active: bool

user: User = {'name': 'Ada', 'active': True}
print(user['name'])
Ada

Псевдонимы типов

Псевдоним типа дает более сложному типу читаемое имя.

Coordinates = tuple[float, float]

def show_location(point: Coordinates) -> str:
    return f'{point[0]}, {point[1]}'

print(show_location((12.5, 35.8)))
12.5, 35.8

Ссылки по теме