Питонистическое.
Jan. 5th, 2020 09:37 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Выяснил что в стандартной библиотеке питона модуль collections, а в нем функция namedtuple. Позволяющая генерировать наборы данных с именованными полями и нулевым оверхедом. Более того named tuples - hashable, т.е. могут использоваться в качестве индекстов dict или элементов множества. И их очень удобно создавать из списков, dictionaries и тому подобных конструкций.
Теперь хочу реализацию операций реляционной алгебры над set of named tuples.
Теперь хочу реализацию операций реляционной алгебры над set of named tuples.
no subject
Date: 2020-01-05 07:09 pm (UTC)Down with static typing
Date: 2020-01-05 09:09 pm (UTC)А кому нужны Жаба и ЦиПлюкПлюк — пусть идут в Жабу и т.д.
Re: Down with static typing
Date: 2020-01-05 10:54 pm (UTC)Re: Down with static typing
Date: 2020-01-06 12:08 am (UTC)В тех проектах, где я видел использование mypy — отсутствие type hints выдавало ошибку. Не знаю, можно ли это отключить. Я вместо этого предпочитаю просто не иметь дела с mypy.
Как написать type hint "в этом месте мне нужен экземпляр класса, имеющий метод
.read()
без параметров, возвращающий строку"?Re: Down with static typing
Date: 2020-01-06 06:25 am (UTC)В общем виде это называется «протокол»:
В частном случае вообще может подойти
typing.TextIO
.И да, я применяю mypy в боевом проекте. Польза от наличия аннотаций типов как документации для читателя/мейнтейнера кода настаёт при размере проекта больше 150 SLOC. А польза от mypy — примерно с той точки, когда проект естественным образом разделяется на несколько файлов.
Re: Down with static typing
Date: 2020-01-06 01:56 pm (UTC)Re: Down with static typing
Date: 2020-01-06 10:36 am (UTC)https://mypy.readthedocs.io/en/latest/protocols.html#protocol-types
Только не забывайте, что mypy -- это не статическая типизация, а проверка type hints там, где программист счёл их нужными. Если не написать type hints, ничего не будет -- например, если убрать "-> int" в описании класса Bad, ошибка исчезнет.
> В тех проектах, где я видел использование mypy — отсутствие type hints выдавало ошибку.
Я так понимаю, что Вы не видели использование mypy.
Re: Down with static typing
Date: 2020-01-06 01:58 pm (UTC)Я видел использование mypy в нескольких крупных проектах и сильно его там невзлюбил. :-( Отсутствие type hints там везеде приводило к ошибкам.
Re: Down with static typing
Date: 2020-01-07 07:27 am (UTC)Выдавать ошибки на отсутствие аннотаций — это опция. И даже выключенная по умолчанию. Включить её принимает решение мейнтейнер проекта, в тот момент, когда проект уже достаточно аннотирован, или одновременно с решением аннотировать его весь.
В отдельных редких местах, где действительно применяется duck typing и кажется нецелесообразным прямо сейчас прописывать весь протокол, — ошибку можно заткнуть указанием аннотации
Any
(а лучше — отдельным типом, определённым как синонимAny
, с TODO’шкой когда-нибудь это расписать).Re: Down with static typing
Date: 2020-01-07 08:20 am (UTC)src/backend/storage/smgr/md.c из постгреса, в котором Настя Лубенникова нашла комментарий вида FIXME, написанный до её рождения. и так и оставшийся на этом месте.