Комментарии 7
Введение получилось, а где, собственно, мякотка? Все понимают что такое аннотация простых типов.
А вот как объяснить в аннотации, что нам нужно принять лямбду, у которой второй аргумент — это словарь элементов, значения которых — значение списка, возвращаемого лямбдой, являющейся первым аргументом...
Или, "аннотация типов была дурацкой идеей".
А смысл, если язык не запрещает побочные эффекты, и эта лямбда по дороге может наворотить что угодно?
Еще немного, и вы потребуете автоматических доказательств от аннотаций) Но простые зависимые типы вроде как есть.
Эта хрень в ряде случаев работает не корректно и пропускает тип который не должен там быть. Кроме того не поможет вообще если некоторые аргументы — значения одного типа но есть определённые критерии когда переменная годная.
Пример из последнего, который приходит на ум. Есть некий валидатор, который делает validate(obj_is, obj_must), значений одного типа, и как написать чтобы юзер места не перепутал.
Не понятно как использовать эту запись с *args и **kwargs.
Поэтому лично я написал небольшой модуль для валидации в рантайме, с использованием аннотации, например
с приимуществом что можно рукописно свалидировать как хочешь, в том числе и
Пример из последнего, который приходит на ум. Есть некий валидатор, который делает validate(obj_is, obj_must), значений одного типа, и как написать чтобы юзер места не перепутал.
Не понятно как использовать эту запись с *args и **kwargs.
Поэтому лично я написал небольшой модуль для валидации в рантайме, с использованием аннотации, например
@typecheck(сюда все параметры)
def fn(...)
с приимуществом что можно рукописно свалидировать как хочешь, в том числе и
А вот как объяснить в аннотации, что нам нужно принять лямбду, у которой второй аргумент — это словарь элементов, значения которых — значение списка, возвращаемого лямбдой, являющейся первым аргументом..
используются примерно в 20-30% кода, написанного на Python 3
Ой что-то не верю :-D В 2-3% — может быть.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Исследование глубин аннотаций типов в Python. Часть 1