@mr_forlife

Как правильно аннотировать словарь Python?

В статьях и книгах встречаются разные примеры аннотирования словарей.
from typing import Dict, Mapped


dict_one = dict[str, Any]
dict_two = Dict[str, Any]
dict_three = Mapped[str, Any]


В чем разница между этими вариантами? В каком случае какой вариант предпочтительней?
  • Вопрос задан
  • 116 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Варианты 1 и 2 ссылаются на вполне конкретный класс dict. Когда typing только ввели, стандартынй dict не поддерживал такую запись, поэтому создали псевдоним typing.Dict. Потом к этому типу (а также к tuple и list) прикрутили возможность вести себя как генерик. Сейчас Dict, List и Tuple потихоньку планируют выводить из употребления. Они deprecated начиная с питона 3.9.
Вариант 3 - это любой объект, который ведёт себя как словарь, не обязательно именно dict. Но с 3.9 это алиас для collections.abc.Mapping, по той же самой причине.

Так что вариант 2 и 3 имеет смысл, только если тебе нужно поддерживать питон 3.8 и младше.
Выбор между вариантом dict и collections.abc.Mapping зависит от того, что именно тебе нужно - вот прямо dict, или просто что-то словареподобное. См. список методов Mapping тут.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы