Питонические атаки
1.19K subscribers
183 photos
4 videos
1 file
459 links
Всяческие заметки про программирование на Python и другие весёлые истории.
Download Telegram
Forwarded from DevBrain
Вышла первая бета python 3.11: https://www.python.org/downloads/release/python-3110b1/
Версия 3.11 несёт в себе большое количество новых фич. Скоро выпущу подробный пост с разбором каждой фичи. Помимо этого в рамках инициативы Faster Python заявляется, что версия 3.11 в среднем на 22% быстрее чем 3.10 😲😲
🤯3👍2
У Stack Overflow запустился очередной ежегодный опрос среди разработчиков. Уже 12 год подряд.

Пожалуй, это самое интересное исследование про программистов, каждый год получаются какие-то любопытные результаты и открытия. Поэтому, чтобы картинка сложилась максимально полная, обязательно его пройдите! У меня это заняло минут десять.

Take the survey
👍6
Небольшая подборка flake8 плагинов для тех, кто уже использует 3.10 и хочет писать тайп-хинты красиво:

1. flake8-new-union-types — заставляет переписывать Union[X, Y] на X | Y;

2. flake8-pep585 — заставляет использовать встроенные классы, например, list[dict[str, int]], без импортов из typing.

Знаете ещё полезное? Делитесь в комментариях!

#flake8
12👏1
Из комментов. А помните был такой проект flakehell? В какой-то момент он окончательно загнулся, но затем воскрес под новым именем flakeheaven. Вознёсся на небушко, так сказать.

Это обёртка над flake8, которая добавляет в него больше конфигурабельности и разных фич. Я им пользовался, потому что он поддерживает baseline (может запомнить существующие ошибки и перестать их показывать каждый раз, но зато не даст добавлять новые ошибки), что очень полезно для старых больших проектов. А ещё он под капотом запускает ещё и pylint.

#flake8
👍7
Внезапно, паттерн-матчинг в 3.10 работает сильно быстрее, чем аналогичные ему if-выражения. В некоторых случаях. Видимо, соль в том, что паттерн-матчинг компилируется в специальные опкоды, которые отрабатывают быстрее ифов общего назначения.

https://twitter.com/anthonypjshaw/status/1526034155448184832?s=21&t=tCoZUko6djSmv4NN3RKDPw

UPD: Оказалось, что дело в медленной проверке isinstance(seq, Sequence). Паттерн-матчинг тоже делает аналогичную проверку, но видимо каким-то другим образом. Так что подождите, не выпиливайте пока if-ы из своего кода.
👍5👎4🤔3
Наконец-то реальная польза от этого всего программирования
Forwarded from Chernov sharit
Прекрасно, когда TL;DR есть от автора статьи (:

———

TL;DR: I built a wifi-equipped water gun to shoot the pigeons on my balcony, controlled over the internet by a python script running openCV reading the camera image of my old iPhone.

https://maxnagy.com/posts/pigeons/

#python #fun
🔥7😁1
Оказывается, механизм разрешения зависимостей из Poetry можно использовать для решения судоку. И судоку, и разрешение зависимостей — это задачи удовлетворения ограничений (constraint satisfaction problem), поэтому достаточно лишь записать правила судоку в виде пакетов с зависимостями и заставить Poetry это установить. А если добавить флажки для подробного вывода, то Poetry еще по пути будет объяснять, почему он решает судоку именно так. Офигенно!

Статья | Тред на реддите
🤯21👍2🔥2
Недавно начали публиковать бета-релизы Python 3.11, который выйдет примерно через 4 месяца. Если начался этап бет, то значит, что новые фичи в релиз добавлять больше не будут, а сконцентрируются на стабилизации того, что уже добавили. Можно в принципе уже идти читать What’s New.

Есть и новые фичи, и изменения в стандартной библиотеке, но, пожалуй, релиз 3.11 — это в основном про скорость. С этой версией языка выходят первые наработки проекта Faster CPython. Обещают ускорение 10-60% по сравнению с предыдущими версиями, при этом переписывать для этого ничего не придётся.

Почитайте секцию про оптимизации, это интересно.
14🔥5
В комментах к предыдущему посту скинули ссылку на крутой инструмент specialist, который умеет визуально показывать оптимизации, применённые к коду интерпретатором Python 3.11.

Напомню, что в 3.11 появится нечто под названием "Specializing Adaptive Interpreter". Это такая штука, которая будет выявлять в коде часто выполняющиеся операции (hot regions) и оптимизировать их, подменяя универсальные, медленные инструкции на более специфичные, быстрые. Например, если интерпретатор поймёт, что в определенной строчке кода часто происходит сложение целых чисел (а не конкатенация строк, например), то он подменит операцию на более быструю, которая специально заточена под целые числа. Если вдруг в какой-то момент в этом же самом месте кода окажутся строки, а не числа, то оптимизированную операцию придётся заменить обратно на обычную.

Вот, specialist как раз умеет понимать все эти трюки и раскрашивать код в разные цвета, в зависимости от степени примененных оптимизаций. На гитхабе проекта есть туториал с объяснением.
👍16
Хм, не прошло и полутора лет 😅
👍2
Узнал:

• что регулярные выражения можно удобно разбивать на кусочки, а затем собирать вместе через f-строки;
• что внутри регулярок можно использовать комментарии.

И это в сумме превращает запутанное месиво из бэкслешей и скобок во вполне понятный текст. Полезно, хоть даже я и не так часто пишу большие регулярки.

https://death.andgravity.com/f-re
👍13🔥2
В JetBrains решили переработать UI своих IDE, сделать его более современным и простым — больше иконок, меньше панелек.

Пока что это доступно только в превью (по запросу), но в какой-то момент новый UI станет дефолтным. Переход будет итеративным и постепенным. Обещают, что ещё пару лет будут держать возможность вернуться к старому UI, чтобы все успели переучиться.

Что скажете? Уже пробовали? Пользоваться можно?

Пост 1 | Пост 2

#jetbrains
15🤮4🤔3
Оказывается, крайний релиз форматтера black 22.1.0 (он же первый не-бета релиз) для всех основных платформ распространяется в виде колёс со скомпилированным нативным кодом. То есть там уже не обычный интерпретируемый питон, а именно нативный код, использующий Python API. На фоне долгожданной стабилизации форматтера эта новость осталась практически незамеченной.

Получается такое через компилятор mypyc, идущий в комплекте с тайп-чекером mypy. Он умеет транспилировать обычный код на питоне с тайп-аннотациями в исходники на C, а их уже можно скомпилировать в библиотеки для большинства платформ.

В итоге после компиляции и некоторых оптимизаций получилось ускорить работу форматтера в два раза. Время запуска тоже слегка сократилось. Из-за особенностей компилятора тайп-аннотации тоже стали строже.

Автор этой инициативы написал серию постов (раз, два, три) про возникшие по пути сложности. Любопытно.

#black #formatter #mypy #mypyc
👍9🔥1🤯1
Вот ещё статья в тему mypyc. Товарищ Glyph настойчиво предлагает всем начать пользоваться этим инструментом, показывая как он ускоряет FizzBuzz в два с лишним раза.

https://glyph.twistedmatrix.com/2022/04/you-should-compile-your-python-and-heres-why.html

#mypy #mypyc
👍3🥰1
согласны?
😁20🤡8👎7🤯1💩1
StackOverflow опубликовали результаты своего ежегодного опроса среди разработчиков.

Вот моя диванная аналитика:

* JS всё ещё самый популярный язык — его используют две трети всех разработчиков. TS продолжает набирать популярность.
* Если не брать в расчёт HTML и SQL (которые не совсем языки программирования), то следующим языком по популярности все ещё идёт Python.
* Go, Kotlin и Rust потихонечку растут, а Java и PHP потихонечку сдуваются. Популярность C# пока находится в относительном равновесии.
* Люди всё ещё в восторге от Rust.
* PostgreSQL продолжает откусывать от MySQL по чуть-чуть популярности год за годом.
* FastAPI стал в два раза популярнее, чем в прошлом году (3% и 6%).

В целом, всё вполне ожидаемо. Тенденции предыдущих лет сохраняются.

https://survey.stackoverflow.co/2022/
🔥43👍2❤‍🔥1
Среди питонячьих веб-фреймворков Django и Flask, понятное дело, лидируют, но идут они прям ноздря в ноздрю.
13🥰3
Веб-фреймворк Quart, который создавался как асинхронный Flask, присоединился к проекту Pallets.

Теперь у Pallets есть и WSGI, и ASGI микрофреймворк, а в итоге они в какой-то момент хотят слить их вместе. Думают над созданием универсальных плагинов, которые будут подходить к обоим фреймворкам.

https://palletsprojects.com/blog/quart-pallets/

#flask
👍12🔥2