Post #568
2.22K


- 🔥 17
- 🤯 7
- 👎 2
- 👍 1
- 🎉 1
- 🙏 1
- 🐳 1
- 💔 1
ПИ @pythonic_attacks
Showing posts older than #570 · Back to latest


typing.TypeVar (спойлер: больше нет). Да, это снова про тайп хинты. Похоже, это самая активно развивающаяся область языка за последние 10 лет.typing.TypeVar, где ты дважды пишешь одно и то же имя переменной и засоряешь странными однобуквенными именами глобальную область видимости. В 3.12 можно будет просто прям при определении функции задекларировать своё намерение: "я буду тут использовать переменную типа T", и аннотируешь ей все связанные аргументы и возвращаемые значения. Офигенно? О да.TypeVar. Но теперь в языке появляется новое "мягкое" ключевое слово type, которое ведёт себя по-разному в зависимости от контекста (как async). Забавно, что это нововведение фактически депрекейтит PEP 613 про тайп алиасы, который появился в 3.10. Я даже толком не успел начать им пользоваться. Всё так быстро меняется.Sequence[Parent] вместо list[Parent] и которую я долго не мог осознать. Кстати, недавно смотрел хороший видос про эти концепции. Разобрался, вроде. Блин, не может ли недостаток понятных материалов на эту тему быть связан с тем, что эти слова так сложно писать и произносить? Я минуту набирал и перечитывал эти три слова в начале абзаца, да и то наверняка ошибся.TypeVar (теперь у нас есть "традиционные" и новые, и их нельзя смешивать между собой) и в целом делает язык синтаксически сложнее (давайте писать квадратные скобки вообще везде), то это абсолютно точно движение в правильную сторону, шаг навстречу программисту. Бойлерплейта станет меньше, импортов из typing меньше, сложных концепций меньше, пространства для ошибки тоже. Да и выглядит относительно предыдущего варианта намного приятнее. Мне нравится.


pyproject.toml или requirements.txt.Forwarded from datapythonista

typeshed зааннотировали встроенную функцию pow() (это возведение числа в степень), то до вечера потом ходил под впечатлением. Там описали 30 разных вариантов этой функции, и это всё ещё покрывает не все возможные кейсы. Ну что за жесть. Система типов не может нормально выразить просто гигантский пласт возможностей языка. А потом как-то подумал, что системе типов не обязательно быть идеальной, чтобы быть полезной, и полегчало. Ладно, большую часть проблем ловит. Я не так часто замечаю эти места, где система типов даёт слабину, зато тайп-чекинг каждый день спасает меня от кучи глупых ошибок. Practicality beats purity, короче. Нет, всё-таки не могу не похвалить тайп-чекинг. Полезная штука, обязательно пользуйтесь.
ruff.ruff не понимает синтаксис match-case, и поэтому мы пока не можем его использовать. А он, оказывается, уже понимает! Меньше суток назад вышел релиз с полной поддержкой нового синтаксиса из Python 3.10 и 3.11. Это был основной блокер, который сильно мешал адопшену инструмента. Теперь ожидаю взрывной рост популярности ruff!

ruff.ruff автоформаттер, чтобы можно было запустить ruff --fix и пофиксить все стилистические проблемы, и стало красиво. Вот здесь в ишью уже пришли на обсуждение и мейнтейнеры black, и мейнтейнеры blue (это форк black с одинарными кавычками), кто-то предлагает взять yapf за ориентир, а Чарли просто отчитывается, что уже начал работу, и его автоформаттер частично проходит тест-сьют из black.black полтора года стабилизировал "магические запятые", и они всё время то появлялись, то исчезали, что в моей голове уже сложилось впечатление, что заново этот путь никто не захочет пройти. Но нет, нашлись отчаянные.yapf, но как минимум можно будет выбрать стиль кавычек. Что с одной стороны хорошо и удобно, а с другой стороны может снова спровоцировать конфликт между племенами байкшеддеров. Ох.ruff развивается. Люди годами делали эти инструменты, а он создаёт их копии за считанные недели. И, блин, наверняка же сделает. В чём секрет, как думаете?