История изменений
Исправление Virtuos86, (текущая версия) :
Долговато ты на ответ сподабливался, аж к 5-ой странице смог. Но естественно, не убедил 😊.
Итого преимущества скриптухи: кода писать раза в три меньше (факт), пролцесс его отладки - это просто сказка: ты можешь буквально по шагам вперед-назад ходить, смотреть как изменяются переменные и тп.
Сказка она в лишпе, где отладка и работа с образом заложены в основу ЯП. В питоне интерпетатор отдельно, код отдельно. Ну, можно что-то интроспекцией из байткода вытащить, однако это не штатная возможность, о которой в тьюториале каждому новичку рассказывают. В этом отношении питон ничем не лучше какой-нить сишки, там тоже отладчики есть.
Без хинтов ничего непонятно что туда передавать, а так понятно:
def listen(self, address: tuple[str, int],
Если у тебя здесь str
это не питонячий стринг, а domain-specific сущность, и int
не питонячье целое, а упомянутый UUID, то ничего тебе не понятно. Проблема скриптописателей в том, что они всюду тащат встроенные типы данных, которые вроде как везде подходят, но почти всегда имеют «чуть-чуть» более широкий контракт на использование, чем нужный тип. В точности, как ты описал:
если заходит речь о деньгах, потому как можно Decimal передать, можно сумму представить как флоат, можно вообще целым типа 1 рубль = 1000
Ну и какой тут int
? Ты уже бомбу закладываешь, пытаясь запихать тут встроенный тип данных. В твоём примере по уму будет def listen(self, address: tuple[URI, UUID],
(не уверен, что угадал, что там должно быть правда) — вот это уже попытка в статическую типизацию, а твоя версия это такая же скриптодрисня, что и без сигнатуры вообще.
Исходная версия Virtuos86, :
Долговато ты на ответ сподабливался, аж к 5-ой странице смог. Но естественно, не убедил 😊.
Итого преимущества скриптухи: кода писать раза в три меньше (факт), пролцесс его отладки - это просто сказка: ты можешь буквально по шагам вперед-назад ходить, смотреть как изменяются переменные и тп.
Сказка она в лишпе, где отладка и работа с образом заложены в основу ЯП. В питоне интерпетатор отдельно, код отдельно. Ну, можно что-то интроспекцией из байткода вытащить, однако это не штатная возможность, о которой в тьюториале каждому новичку рассказывают. В этом отношении питон ничем не лучше какой-нить сишки, там тоже отладчики есть.
Без хинтов ничего непонятно что туда передавать, а так понятно:
def listen(self, address: tuple[str, int],
Если у тебя здесь str
это не питонячий стринг, а domain-specific сущность, и int
не питонячье целое, а упомянутый UUID, то ничего тебе не понятно. Проблема скриптописателей в том, что они всюду тащат встроенные типы данных, которые вроде как везде подходят, но почти всегда имеют «чуть-чуть» более широкий контракт на использование, чем нужный тип. В точности, как ты описал:
если заходит речь о деньгах, потому как можно Decimal передать, можно сумму представить как флоат, можно вообще целым типа 1 рубль = 1000
Ну и какой тут int
? Ты уже бомбу закладываешь, пытаясь запихать тут встроенный тип данных. Тут по уму будет def listen(self, address: tuple[URI, UUID],
(не уверен, что угадал, что там должно быть правда) — вот это уже попытка в статическую типизацию, а твоя версия это такая же скриптодрисня, что и без сигнатуры вообще.