Хитрый Питон
2.6K subscribers
4 photos
222 links
Я много читаю и делюсь в этом канале заинтересовавшими меня материалами, в основном про Python. @korneevm
Download Telegram
Последние полгода были очень нагруженными (и интересными) и на ведение канала времени не оставалось. К Новому году удалось разгрести несколько больших проектов, и я снова буду регулярно сюда писать. Ах да, и с наступившим вас!
Если вам когда-нибудь было интересно, как устроены линтеры — вот вам хороший подробный туториал по AST. Модуль AST позволяет представить исходный код в виде дерева и анализировать или даже модифицировать его. Разобрано очень подробно, с множеством примеров, рекомендую https://sadh.life/post/ast/
Неплохая вводная статья про профайлинг в python. В статье показано несколько инструментов, которые помогут понять, что именно в программе есть много cpu или памяти https://martinheinz.dev/blog/64
🔥2
Интересная статья про то, почему декоратором @lru_cache нельзя обертывать методы классов. Если коротко - объект не будет удаляться garbage collector-ом что может привести к неожиданным утечкам памяти. Также @lru_cache не умеет игнорировать self в списке аргументов, поэтому кэш будет для каждого объекта свой и кеширование по факту не будет работать.

С методами классов, статическими методами и обычными функциями работает, как и ожидается.

https://rednafi.github.io/reflections/dont-wrap-instance-methods-with-functoolslru_cache-decorator-in-python.html
В python-сообществе давно обсуждается идея отказаться от GIL и и реализовать полноценный параллелизм при работе с тредами. Это сложная задача, так как нужно сохранить обратную совместимость в том числе с библиотеками, использующими код на C.

Сегодня на хабре вышел перевод интервью с автором nogil - который как раз занимается этим вопросом. Перевод неидеальный, но если вам интересно куда движется python - прочитайте обязательно https://habr.com/ru/company/kts/blog/646207/
👍3
Видимо это новость для маководов - Apple убирает python 2.7 из MacOs 12.3. Кажется это последнее место, где второй питончик шел из коробки. Это, конечно, уже ни на что не повлияет, но вдруг у ктого-то маке сих пор используются скрипты на втором питоне для какой-нибудь мелкой автоматизации. Большой тред на Hacker News https://news.ycombinator.com/item?id=30115214
🔥7👍3
В питоне (как и в любом другом языке программирования) есть некоторое количество "особенностей", незнание которых может привести к серьезным проблемам с кодом.

Статья "10 подводных камней, связанных с безопасностью в python" рассказывает о таких неочевидных штуках. Некоторые из них уже не очень актуальны в новых версиях python, но все равно стоит потратить время и ознакомиться со статьей. Хотя бы потому, что примерно половина этих "особенностей" не будут проблемой, если вы никогда не доверяете данным пришедшим снаружи системы 🙂

https://blog.sonarsource.com/10-unknown-security-pitfalls-for-python
👍28
Возможно, вы слышали о AST — это встроенная в питон библиотека для построения абстрактного синтаксического дерева кода. AST используется, например, при написании линтеров. Минус в том, что он позволяет анализировать код, но при этом выкидывает части кода, которые не важны для компилятора, но важны для нас (например, комментарии).

Некоторое время назад Instagram выложил LibCST - которая гораздо бережнее относится к коду и соответственно может использоваться не только для проверки, но и для модификации кода.

В статье разобран хороший пример, как с помощью LibCST можно написать инструмент для ручного рефакторинга кода, который было бы сложно сделать другими инструментами (и долго и неудобно вручную). Если вам интересна тема разработки инструментария для python - рекомендую https://engineering.instawork.com/refactoring-a-python-codebase-with-libcst-fc645ecc1f09
👍14
Мои хорошие знакомые делают сегодня онлайн-митап про тему которая сейчас кажется становится еще более актуальной - "Нанимать или выращивать" крутых специалистов. Я планирую сходить послушать и видится мне, что тема эта может быть интересна не только для CEO/CTO/HRD и прочих топов, но и для обычных разработчиков. Полезно знать как думают те, кто будет тебя нанимать 🙂
Регистрация бесплатная по ссылке https://aihub.timepad.ru/event/2003165/
👍12🔥3👎2
На ютуб выложены доклады с прошедшего PyCon US 2022. Я пока успел только посмотреть названия видео и темы докладов показались интересными, буду смотреть в ближайшие недели https://www.youtube.com/watch?v=nWnIRYQrVtk&list=PL2Uw4_HvXqvYeXy8ab7iRHjA-9HiYhRQl
👍19🔥7
Как обещал, начну рассказывать свои впечатления о докладах с PyCon US. Первый доклад, который я посмотрел - "Best Practices for Continuous Integration in Python" https://www.youtube.com/watch?v=HMlXSiDKWrg&list=PL2Uw4_HvXqvYeXy8ab7iRHjA-9HiYhRQl&index=17

Честно говоря, ожидал большего. В течении 20 минут чувак рассказывает довольно таки очевидные вещи, причем с минимумом прикладных советов - "хороший CI должен быть точным, быстрым и дешевым", "не забывайте пинить версию питона и библиотек", "кеширование - это хорошо" и все в таком духе. Возможно, доклад может показаться интересным новичкам, которые с CI не сталкивались. Но даже в этом случае можно найти более информационно насыщенные видео.

Резюме - не рекомендую
👍31🔥3
Следующий доклад, который я сегодня посмотрел Bootstrapping Your Local Python Environment - https://www.youtube.com/watch?v=-YEUFGFHWgQ&list=PL2Uw4_HvXqvYeXy8ab7iRHjA-9HiYhRQl&index=18

В самом начале показалось что, как и предыдущий уйдет в голую (и малополезную) теорию - "No SoDo" и вот это все. Но дальше докладчик довольно подробно показал работу pyenv, который думаю далеко не все знают и используют. Я для себя узнал про pipx, который позволяет удобно устанавливать python-утилиты.

В целом он вкратце упомянул наверное большинство более-менее распространённых инструментов для управления версиями языка и зависимостями. В конце рассказал про мои любимые piptools.

Резюме - никаких откровений, но как вводная для тех кто знает только python -m venv будет полезно.
👍26🔥1
Работа с датой и временем всегда была довольно мозголомной задачей, даже если не вспоминать про заморочки с часовыми поясами. Вообще про часовые пояса очень часто забывают, особенно если пишут прототип "для себя". В этом докладе с PyCon-а хороша разобрана тема с тем, как устроена работа с таймзонами в питоне, какие есть подводные камни и как делать правильно https://www.youtube.com/watch?v=XZlPXLsSU2U&list=PL2Uw4_HvXqvYeXy8ab7iRHjA-9HiYhRQl&index=21

Резюме - всячески рекомендую
👍15🔥12
Вышла джанга 4.1 https://www.djangoproject.com/weblog/2022/aug/03/django-41-released/ из интересного:

1. Поддержка асинхронных запросов в ORM, но магическим образом запросы асинхронными не станут, надо в явном виде вызывать начинающиеся с a методы типа .afirst() вместо .first()
2. В class-based views можно делать асинхронные методы
3. Meta.constraints теперь проверяются во время валидации модели. Я не успел посмотреть как это работает, но если модель сама начнет неявно лазить в базу для проверки unique то это скорее минус

Еще всякие мелочи, которые показались интересными:
- makemigrations --scriptable выглядит как удобная для использования в CI штука
- новая команда optimizemigration обещает некие оптимизации для миграций, интеерсно будет посмотреть как это работает
- поддержка пеерименования индексов в миграциях
- bulk_create() теперь кажется умеет делать update если такая строка уже есть в базе
- iterator() научили делать prefetch_related
- добавили механизм ротирования SEKRET_KEY-а https://docs.djangoproject.com/en/4.1/ref/settings/#secret-key-fallbacks
- много всякого removed/deprecated но ничего для себя интересного в списке я не нашел https://docs.djangoproject.com/en/4.1/releases/4.1/#backwards-incompatible-changes-in-4-1

Попробую на выходных один пет-проджект перевести на 4.1
👍35🔥15