Хитрый Питон
前往频道在 Telegram
Я много читаю и делюсь в этом канале заинтересовавшими меня материалами, в основном про Python. @korneevm
显示更多2 505
订阅者
无数据24 小时
+27 天
+130 天
帖子存档
2 504
Возможно, вы слышали о AST — это встроенная в питон библиотека для построения абстрактного синтаксического дерева кода. AST используется, например, при написании линтеров. Минус в том, что он позволяет анализировать код, но при этом выкидывает части кода, которые не важны для компилятора, но важны для нас (например, комментарии).
Некоторое время назад Instagram выложил LibCST - которая гораздо бережнее относится к коду и соответственно может использоваться не только для проверки, но и для модификации кода.
В статье разобран хороший пример, как с помощью LibCST можно написать инструмент для ручного рефакторинга кода, который было бы сложно сделать другими инструментами (и долго и неудобно вручную). Если вам интересна тема разработки инструментария для python - рекомендую https://engineering.instawork.com/refactoring-a-python-codebase-with-libcst-fc645ecc1f09
2 504
В питоне (как и в любом другом языке программирования) есть некоторое количество "особенностей", незнание которых может привести к серьезным проблемам с кодом.
Статья "10 подводных камней, связанных с безопасностью в python" рассказывает о таких неочевидных штуках. Некоторые из них уже не очень актуальны в новых версиях python, но все равно стоит потратить время и ознакомиться со статьей. Хотя бы потому, что примерно половина этих "особенностей" не будут проблемой, если вы никогда не доверяете данным пришедшим снаружи системы 🙂
https://blog.sonarsource.com/10-unknown-security-pitfalls-for-python
2 504
Видимо это новость для маководов - Apple убирает python 2.7 из MacOs 12.3. Кажется это последнее место, где второй питончик шел из коробки. Это, конечно, уже ни на что не повлияет, но вдруг у ктого-то маке сих пор используются скрипты на втором питоне для какой-нибудь мелкой автоматизации. Большой тред на Hacker News https://news.ycombinator.com/item?id=30115214
2 504
В python-сообществе давно обсуждается идея отказаться от GIL и и реализовать полноценный параллелизм при работе с тредами. Это сложная задача, так как нужно сохранить обратную совместимость в том числе с библиотеками, использующими код на C.
Сегодня на хабре вышел перевод интервью с автором nogil - который как раз занимается этим вопросом. Перевод неидеальный, но если вам интересно куда движется python - прочитайте обязательно https://habr.com/ru/company/kts/blog/646207/
2 504
Два больших гайда про то, что такое ThreadPoolExecutor и ProcessPoolExecutor и как их использовать:
- https://superfastpython.com/threadpoolexecutor-in-python/
- https://superfastpython.com/processpoolexecutor-in-python/
2 504
Интересная статья про то, почему декоратором @lru_cache нельзя обертывать методы классов. Если коротко - объект не будет удаляться garbage collector-ом что может привести к неожиданным утечкам памяти. Также @lru_cache не умеет игнорировать self в списке аргументов, поэтому кэш будет для каждого объекта свой и кеширование по факту не будет работать.
С методами классов, статическими методами и обычными функциями работает, как и ожидается.
https://rednafi.github.io/reflections/dont-wrap-instance-methods-with-functoolslru_cache-decorator-in-python.html
2 504
Неплохая вводная статья про профайлинг в python. В статье показано несколько инструментов, которые помогут понять, что именно в программе есть много cpu или памяти https://martinheinz.dev/blog/64
2 504
Если вам когда-нибудь было интересно, как устроены линтеры — вот вам хороший подробный туториал по AST. Модуль AST позволяет представить исходный код в виде дерева и анализировать или даже модифицировать его. Разобрано очень подробно, с множеством примеров, рекомендую https://sadh.life/post/ast/
2 504
Последние полгода были очень нагруженными (и интересными) и на ведение канала времени не оставалось. К Новому году удалось разгрести несколько больших проектов, и я снова буду регулярно сюда писать. Ах да, и с наступившим вас!
2 504
Я использую GitHub Actions практически с момента их релиза в паблик и мне нравится. Поэтому я решил записать видео с рассказом о том, как прикрутить их к своему репозиторию https://youtu.be/NijFSs03Pd4
2 504
Хорошая обзорная статья по то, как сделать docker-образы для своих python-приложений лучше https://pythonspeed.com/articles/smaller-docker-images/
2 504
Записал новое видео про аннотации типов, mypy и его настройку - https://www.youtube.com/watch?v=_vAb8M4SUSg
2 504
Второе видео про хеширование в питоне. Здесть я показал, зачем может быть нужно определять метод hash для своих классов и какие там подводные камни https://www.youtube.com/watch?v=OW_gSexoT64
2 504
Если спросить начинающего разработчика, какие типы данных могут быть ключами словарей, ответ будет "строки". Более опытный разработчик скажет, что ключами словаря может быть любой иммутабельный тип данных. Но это тоже не совсем правда. Записал видео про hash() и показал, для чего можно использовать кортежи в качестве ключей словаря https://youtu.be/HPsm4eOaR8I
2 504
В нескольких предыдущих видео я рассказывал о том, как устроены декораторы и для чего их можно применять. Сегодня я хочу показать еще один вариант использования декоратора - предварительная обработка аргументов, передаваемых в задекорированную функцию - https://youtu.be/fZSvsC3i9VI
2 504
В прошлый раз мы реализовали безопасную перезапись файла при помощи менеджера контекста на базе класса. Сейчас решим ту же задачу используя декоратор contextmanager из модуля contextlib стандартной библиотеки - https://youtu.be/tMGf9GwjY6g
2 504
Наткнулся на статью, рассказывающую как оформить библиотеку, опубликовать ее на pypi и добавить разную приятную автоматизацию https://antonz.org/python-packaging/
2 504
Контекстные менеджеры - очень полезная штука в python. Давайте разберем использование context manager на примере atomic write. Т.е. если в процессе записи информации в файл произойдет ошибка, мы должны откатиться к предыдущей версии файла. https://youtu.be/e1d74l02MVc
2 504
Сегодня я хочу рассказать еще про одну оптимизацию в cpython - свертку констант или constant folding https://www.youtube.com/watch?v=TpqAVEU0eZI
