` One additional drawback ... if anytime sooner or later you would wanted to introduce scoped variables like in Rust with keyword var or let it could make some problems ... python let x = 3 # Parser will think that it is the function let
Во втором питоне очень заколебали неожиданные ошибки, из-за того что например фунция принимает юникод, но не дай бог в нём будет что-то кроме ascii - она тут же падает, потому что на самом деле умеет только в строки (которые во втором питоне). И другие подобные проблемы, когда сложно догадаться умеет функция в юникод или нет и отсутствие согласованности в вопросе "что же есть такое строки?".
Например всякие функция для расчёта хешей и конвертирования в base64. Во втором питоне туда можно запихнуть юникод, и если внутри только ascii, то проблем не будет - все тесты сработают. А в продакшене прилетит кириллица и всё рухнет.
Например всякие функция для расчёта хешей и конвертирования в base64. Во втором питоне туда можно запихнуть юникод, и если внутри только ascii, то проблем не будет - все тесты сработают. А в продакшене прилетит кириллица и всё рухнет.
Ну не надо.. Я не хочу вс. эту боль вспоминать, а это ещё иногда стреляет (
Есть тут специалисты по typing? Мне надо на нём описать штуку, когда функция принимает в качестве аргумента любой класс унаследованный от конкретного базового класса, и возвращает наружу экземпляр этого класса. Т.е. как-то вот так:
def func(klass: Type[V]) -> V:
И вот надо как-то сказать что V - это generic тип с ограничением на базовый класс.
Да, всё верно - я это сначала пробовал, но писал в квадратных скобках по привычке, как в тайп-аннотациях. Поэтому PyCharm и ругался на bound. Пока не запустил тесты не увидел ошибки.