Ответ 1
Нет никакой реальной разницы между использованием простых typing.Dict
и dict
, no.
Однако typing.Dict
является Generic type, который позволяет также указать тип ключей и значений, делая его более гибким:
def change_bandwidths(new_bandwidths: typing.Dict[str, str],
user_id: int,
user_name: str) -> bool:
Таким образом, вполне возможно, что в какой-то момент вашего жизненного цикла проекта вы хотите более точно определить аргумент словаря, в результате чего расширение typing.Dict
до typing.Dict[key_type, value_type]
является "меньшим" изменением, чем замена dict
.
Вы можете сделать это еще более общим с помощью Mapping
или MutableMapping
здесь; так как вашей функции не нужно изменять отображение, я бы придерживался Mapping
. A dict
- это одно отображение, но вы можете создавать другие объекты, которые также удовлетворяют интерфейсу отображения, и ваша функция может все еще работать с ними:
def change_bandwidths(new_bandwidths: typing.Mapping[str, str],
user_id: int,
user_name: str) -> bool:
Теперь вы ясно говорите другим пользователям этой функции, что ваш код фактически не изменит отображаемое сопоставление new_bandwidths
.
Ваша фактическая реализация - это просто ожидание объекта, который можно распечатать. Это может быть тестовая реализация, но, поскольку она стоит, ваш код будет продолжать работать, если вы использовали new_bandwidths: typing.Any
, потому что любой объект в Python можно печатать.