Как стать автором
Обновить

Комментарии 7

Введение получилось, а где, собственно, мякотка? Все понимают что такое аннотация простых типов.


А вот как объяснить в аннотации, что нам нужно принять лямбду, у которой второй аргумент — это словарь элементов, значения которых — значение списка, возвращаемого лямбдой, являющейся первым аргументом...


Или, "аннотация типов была дурацкой идеей".

А смысл, если язык не запрещает побочные эффекты, и эта лямбда по дороге может наворотить что угодно?

См секцию "Или" в предыдущем комментарии.

Еще немного, и вы потребуете автоматических доказательств от аннотаций) Но простые зависимые типы вроде как есть.

Интересная идея. И exhaustive pattern matching до кучи.

Эта хрень в ряде случаев работает не корректно и пропускает тип который не должен там быть. Кроме того не поможет вообще если некоторые аргументы — значения одного типа но есть определённые критерии когда переменная годная.
Пример из последнего, который приходит на ум. Есть некий валидатор, который делает validate(obj_is, obj_must), значений одного типа, и как написать чтобы юзер места не перепутал.
Не понятно как использовать эту запись с *args и **kwargs.
Поэтому лично я написал небольшой модуль для валидации в рантайме, с использованием аннотации, например
@typecheck(сюда все параметры)
def fn(...)


с приимуществом что можно рукописно свалидировать как хочешь, в том числе и
А вот как объяснить в аннотации, что нам нужно принять лямбду, у которой второй аргумент — это словарь элементов, значения которых — значение списка, возвращаемого лямбдой, являющейся первым аргументом..

используются примерно в 20-30% кода, написанного на Python 3

Ой что-то не верю :-D В 2-3% — может быть.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий