Перейти к содержимому

Пост канала

Zen of Python
  1. фото

    Как точно типизировать *args и **kwargs в Python Запись *args: tuple[int, str] выглядит как тип всего кортежа, но проверщик читает её иначе: каждый позиционный аргумент должен быть таким кортежем. У **kwargs: dict[...] тип также относится к каждому именованному аргументу. Типизатор здесь не телепат. Для разнородных аргументов нужен Unpack: Unpack[tuple[int, str]] задаёт типы и порядок позиционных аргументов. Именованные описываются через TypedDict и Unpack[Kw], поэтому проверщик знает тип каждого ключа. В разборе аннотаций показаны и необязательные ключи: все сразу через total=False либо отдельные через NotRequired. До Python 3.12 эти типы берутся из typing_extensions. Подход пригодится обёрткам, которые передают аргументы функции с той же сигнатурой.

    Открыть в MAX
    Просмотры
    45
    ER
    2,2%
    Реакции
    1