uk
Feedback
Хитрый Питон

Хитрый Питон

Відкрити в Telegram

Я много читаю и делюсь в этом канале заинтересовавшими меня материалами, в основном про Python. @korneevm

Показати більше
2 505
Підписники
-224 години
+27 днів
+130 день
Архів дописів
Microsoft внезапно дропнула спонсорскую поддержку Faster CPython project и уволила большую часть команды. Ситуация неприятная, работа по ускорению питона явно замедлится. Тем не менее, кажется разработчики не опускают руки и уже обсуждают, как двигаться дальше https://discuss.python.org/t/community-stewardship-of-faster-cpython/92153/10

Недавно ребята из astral (ruff, uv) выложили на github ty - свой тайпчекер (аналог mypy) https://github.com/astral-sh/ty. Никита Соболев пощупал его и записал небольшое видео с разбором. Если вам интересен тулинг для питона - посмотрите https://www.youtube.com/watch?v=5PCP4ICoirg

Подключайтесь обсуждать новости апреля в эту пятницу🎙 2 мая в 14:00 (по мск) в прямом эфире Moscow Python Podcast обсудим последние новости Python вместе с Григорием Петровым и Михаилом Корнеевым: 🔵В Python закончили затаскивать криптографию из HACL* 🔵Релиз Pydantic v2.11 🔵Dependency groups и экспериментальная поддержка pylock.toml в pip 🔵Приняли PEP 768 – Safe external debugger interface for CPython  🔵Приняли PEP 750 – Template Strings  🔵Отклонили PEP 736 – Shorthand syntax for keyword arguments at invocation Когда и во сколько: 2 мая в 14:00 по мск 🟤Смотреть на YouTube 🟤Cмотреть на Rutube 🟤Cмотреть в VK Видео

Анонс выпуска Moscow Python Podcast — 18 апреля 🎙 Зовём на запись подкаста о строках в Python — от Unicode до оптимизаций в CPython. В эту пятницу погружаемся в мир строк вместе с Василием Рябовым, ведущим программистом Positive Technologies и спикером Python Day обсудим: 🔵основы Unicode и кодировок — почему это важно каждому питонисту; 🔵закулисье CPython или как строки хранятся в памяти; 🔵парсинг исходного кода в AST; 🔵как векторизация и оптимизации помогают ускорить обработку строк. Дата и время: 18 апреля в 17:00 (по Москве, GMT+3) 📍 Внимание: начало в нестандартное время — не пропустите. Подключайтесь на удобной платформе и не забудьте включить уведомления: 🟢YouTube 🟢Rutube 🟢VK Видео Готовьте свои «грабли» из мира строк — разберём их в прямом эфире🔥

Сегодня в подкасте обсудим новости Python за март🎙 Новости выпуска: • Релиз Django 5.2; • PEP 751 – стандарт lock-файлов в Python; • Функция генерации UUIDv7 включена в стандартную библиотеку Python; • И другие новости Когда и во сколько: пятница, 4 апреля в 14:00 по мск 🟤Смотреть на YouTube 🟤Cмотреть на Rutube 🟤Cмотреть в VK Видео

Привет! Стартуем новый проект для любителей опенсорса: помогаем меинтейнерам и контрибьюторам найти друг друга. Как оно работает? - В данном канале меинтейнеры разных Python проектов (от CPython, mypy, Litestar до taskiq) могут в любой момент выложить простые задачки, чтобы люди могли принять участие в разработке их проекта - Если вы хотите поработать над задачкой – напишите в самой задаче на гитхабе: "Can I work on this?", получите подтверждение меинтейнера и приступайте - Делитесь успехами / задавайте вопросы в нашем чате @opensource_findings_chat Если вы меинтейнер какого-то крупного проекта (>= 100 ⭐), то пишите в чат – вас добавят как админа, чтобы вы смогли постить в канал свои задачи. Чем больше – тем лучше, не забывайте ставить тег своей технологии. Всем хорошего опенсорса!

Что случилось в Python за последний месяц🎙 Завтра, 7 марта в 14:00 (по мск) в прямом эфире Moscow Python Podcast обсудим последние новости Python вместе с Григорием Петровым и Михаилом Корнеевым, как обычно в первую пятницу месяца. Когда и во сколько: 7 марта в 14:00 по мск 🟤Смотреть на YouTube 🟤Cмотреть на Rutube 🟤Cмотреть в VK Видео

Вышла первая бета LTS-релиза Django 5.2 - много довольно мелких изменений и практически ничего интересного. Из любопытного - разве что появление CompositePrimaryKey и соотвественно возможность сделать pk композитным, раньше это обычно делалось просто через unique. Видимо интересные пользовательские фичи нужно ждать в 6.0 Ссылка на полный ченджлог - https://docs.djangoproject.com/en/dev/releases/5.2/

Поговорим про AI в прямом эфире🔊 В ближайшем выпуске подкаста Moscow Python Podcast пройдет 21 февраля с Александром Храмогиным, AI Engineer в Logic Boost, обсудим следующие темы: ⭕️заменит ли AI разработчиков; ⭕️получим ли мы AGI с развитием искусственного интеллекта; ⭕️что такое агентские системы и зачем они разработчику. В комментарии пишите вопросы Александру, самые интересные обсудим во время выпуска. Заранее поставьте колокольчик, чтобы не пропустить эфир на удобной площадке: 🟤YouTube 🟤Rutube 🟤VK Видео Когда: 21 февраля в 14:00 по мск

Завтра, 7 февраля в 14:00 (по мск) увидимся в прямом эфире подкаста и обсудим последние новости: ⭕️PEP 768 — Safe external debugger interface for CPython; ⭕️результат опроса Facebook об аннотациях типов в Python; ⭕️PEP 770 — возможность указывать SBOM-файлы в pyproject.toml. Когда и во сколько: 7 февраля в 14:00 по мск https://youtube.com/live/hYke_DRJ2LQ

Никита выпустил 1.0 версию wemake-python-styleguide https://github.com/wemake-services/wemake-python-styleguide/releases/tag/1.0.0 Если вы незнакомы с wemake-python-styleguide - это очень строгий линтер для кода, который помогает находить потенциально проблемные места в коде. Искренне рекомендую посмотреть - тут можно спорить надо или не надо его использовать в своих проектах, но как минимум попробовать и подсмотреть хорошие идеи - обязательно. Что интересного в релизе? - Добавлена поддержка ruff - Добавлена поддержка black - Множество новых правил сложности - Крутая поддержка match и case. Находим дубликаты case условий, проверяем сложность, находим много разных ошибок - Много новой конфигурации, чтобы точечно настраивать отдельные правила линтера - Куча багов поправлено! - WPS стал минимум в 2.4 х быстрее

В эту субботу, 28 декабря встретимся в прямом эфире Moscow Python Podcast в 14:00 по мск и обсудим самые интересные новости Python за 2024 год. Пишите в комментарии, какие новости запомнились за этот год и какой выпуск подкаста больше всего понравился. Когда и во сколько: 28 декабря в 14:00 по мск 🟤Смотреть на YouTube 🟤Cмотреть на Rutube

Repost from Moscow Python
По многочисленным просьбам... Оффлайн-курс Learn Python в Москве возвращается! Читайте детали и оставляйте предварительные заявки, если Вас это интересует. Ну или делитесь новостью с друзьями. :) https://forms.gle/wE7Lit97U9Q2q3oT9

Django часто выбирают для быстрого старта в небольших стартапах — как средство накодить прототип бекенда за минимальное время. Но с ростом проекта неизбежно возникают вопросы производительности и надежности. Такой рост может вызывать у не очень опытных разработчиков панику и непонимание - все тормозит, бизнес жалуется, что делать? В сегодняшней статье просто и по делу описаны ключевые аспекты масштабирования Django: оптимизация запросов, кэш, CDN и т.д. Отличное вводное чтиво для тех, кто впервые столкнулся с ростом нагрузи или просто хочет подготовить проект к будущему росту: https://slimsaas.com/blog/django-scaling-performance

Всем привет! Сегодня в прямом эфире Moscow Python Podcast встретимся с сооснователями проекта KeepHQ.dev — Владимиром Филоновым и Матвеем Кукуй, обсудим в выпуске: 🟤жизнь open-source продукта; 🟤плюсы и минусы Python; 🟤рынок AiOps и что это такое. Когда и во сколько: 22 ноября в 14:00 по мск 🟤Смотреть на YouTube 🟤Cмотреть на Rutube

Этой осенью нашему Python-подкасту исполнилось 5 лет, и я хочу немного рассказать о его внутренней кухне. Сам проект начался как идея раскачать авторов и преподавателей курса от сообщества Moscow Python регулярно делиться контентом с людьми. Ее соавтором и первыми "руками" проекта был Леша, мой младший брат по жизни и маркетолог/пиарщик, а последние 5+ лет - деврел - по профессии. В 2022-м, когда мы все разъехались и уже не могли как раньше записывать подкаст в оффлайне, он же помог нам пересобрать состав ведущих и наладить регулярную запись эпизодов теперь уже в онлайне. Сейчас Леша ищет новые проекты на парт-тайме или фуллтайм. В его портфолио, помимо нашего подкаста, Skyeng, 2ГИС, YADRO и другие компании (многие митапы, доклады, статьи на хабре, что вы видели от них - делал или помогал делать он), налаженные связи с Go, PHP, C++, C сообществами, подкаст "Битовые маски" и не только. Если вам нужен человек, которые поможет раскачать внутренние и работу с внешними сообществами, наладить выступления на митапах, технический блог и другие каналы (в том числе найти темы и раскачать движ), а также грамотно выстроить все процессы вокруг этого - пишите @leshahoroshiy

Мигель Гринберг, известный своим мега-туториалом по Flask написал большой пост про обработку ошибок в python. Вопросы "когда и какие эксепшены обрабатывать" и "откуда мне узнать, какие эксепшены тут могут возникнуть" особенно актуальны у новичков, я даже у мидлов видел с этим затруднения. Статья довольно длинная, но я очень рекомендую потратить время и почитать https://blog.miguelgrinberg.com/post/the-ultimate-guide-to-error-handling-in-python Оказывается, на хабре опубликовали перевод статьи https://habr.com/ru/articles/853056/

Завтра, в первую пятницу месяца обсудим в прямом эфире Moscow Python Podcast новости октября. Больше всего времени уделим Python 3.13 и посмотрим ещё несколько новостей. 🟤Когда и во сколько: 1 ноября в 14:00 по мск 🟤Смотреть на YouTube — https://youtube.com/live/1pv5Fq89I5Y 🟤Cмотреть на Rutube — https://rutube.ru/video/f0369fe1772d9a225df120a0304f2270/ И подписывайтесь на наши каналы, чтобы не пропускать выпуски: YouTube и Rutube.

`LOAD_CONST` разделили на три опкода в 3.14 https://github.com/python/cpython/pull/125972 В Python 3.14 распилили один из самых популярных опкодов: LOAD_CONST. Он, как можно понять из названия, он загружал константы из frame->co_consts:

// 3.13:
pure inst(LOAD_CONST, (-- value)) {
    value = GETITEM(FRAME_CO_CONSTS, oparg);
    Py_INCREF(value);
}

>>> def func():
...     return 1

>>> func.__code__.co_consts
(None, 1)
Теперь LOAD_CONST разделен на: - LOAD_SMALL_INT для интов в range(256) - LOAD_CONST_IMMORTAL для загрузки бесмертных объектов (на 1 Py_INCREF меньше, см PyStackRef_FromPyObjectNew vs `PyStackRef_FromPyObjectImmortal`) - LOAD_CONST для оставшихся А еще и RETURN_CONST удалили под шумок. И вот демо байткода:

>>> import dis
>>> def func():
...     x = 1
...     y = ...
...     z = 'привет, мир'

>>> dis.dis(func, adaptive=True)
  2           LOAD_SMALL_INT           1
              STORE_FAST               0 (x)

  3           LOAD_CONST               1 (Ellipsis)
              STORE_FAST               1 (y)

  4           LOAD_CONST               2 ('привет, мир')
              STORE_FAST               2 (z)
              LOAD_CONST               0 (None)
              RETURN_VALUE

>>> # Create caches for tier1 adaptive interpreter to work:
>>> for _ in range(100):
...     func()
>>> dis.dis(func, adaptive=True)
  2           LOAD_SMALL_INT           1
              STORE_FAST               0 (x)

  3           LOAD_CONST_IMMORTAL      1 (Ellipsis)
              STORE_FAST               1 (y)

  4           LOAD_CONST               2 ('привет, мир')
              STORE_FAST               2 (z)
              LOAD_CONST_IMMORTAL      0 (None)
              RETURN_VALUE
Зачем нужен LOAD_SMALL_INT? https://github.com/python/cpython/issues/101291 Если вы внимательно смотрели мой видос про int, то вы помните, как выглядят инты внутри питона:

typedef struct _PyLongValue {
    uintptr_t lv_tag; /* Number of digits, sign and flags */
    digit ob_digit[1];
} _PyLongValue;

struct _longobject {
    PyObject_HEAD
    _PyLongValue long_value;
};
Большие и сложные объекты. Но, для очень частых маленьких чисел, такое переусложнение замедляет работу. Мы можем просто представлять числа в рамках одного машинного слова и складывать их сразу в oparg, без необходимости заргужать их из co_consts:

op(_LOAD_SMALL_INT, (-- value)) {
    PyObject *val = PyLong_FromLong(this_instr->oparg);
    value = sym_new_const(ctx, val);
}
В Python2, кстати, работало быстрее, потому что там был честный int тип. Обсуждение Задумываетесь ли вы про подобные микро-оптимизации, когда пишите код?

Очень рекомендую канал Никиты, там такого много:)