Media is too big
VIEW IN TELEGRAM
Не пропусти МТС True Tech Champ — масштабный фестиваль 21 ноября для тех, кто живет технологиями
Тебя ждут:
• Захватывающая сюжетная линия: уникальная кибервселенная с возможностью влиять на ход происходящего;
• Конференция с международными спикерами: эксперты расскажут о трендах в ИИ и инновациях в индустрии;
• ИТ-качалка — наращивай экспертизу на воркшопах;
• Шоу-финал ИТ-чемпионата, где более 250 талантов со всей России сразятся в лайв-кодинге и программировании роботов на скоростное прохождение лабиринтов со спецэффектами. Поболей за своих фаворитов;
• Активности: бои роботов, кодерские челленджи, пайка плат и не только. Заработай True Coins и обменяй их на стильный мерч;
• HR-Hub, где команда МТС расскажет о возможностях для развития в компании и поможет перезагрузить карьерный трек;
• Афтепати со звездными хэдлайнерами — зажги под популярные хиты!
Когда: 21 ноября, МТС Live Холл в Москве и онлайн.
Регистрируйся на сайте.
Бесплатное участие, количество мест ограничено.
Это #партнёрский пост
Тебя ждут:
• Захватывающая сюжетная линия: уникальная кибервселенная с возможностью влиять на ход происходящего;
• Конференция с международными спикерами: эксперты расскажут о трендах в ИИ и инновациях в индустрии;
• ИТ-качалка — наращивай экспертизу на воркшопах;
• Шоу-финал ИТ-чемпионата, где более 250 талантов со всей России сразятся в лайв-кодинге и программировании роботов на скоростное прохождение лабиринтов со спецэффектами. Поболей за своих фаворитов;
• Активности: бои роботов, кодерские челленджи, пайка плат и не только. Заработай True Coins и обменяй их на стильный мерч;
• HR-Hub, где команда МТС расскажет о возможностях для развития в компании и поможет перезагрузить карьерный трек;
• Афтепати со звездными хэдлайнерами — зажги под популярные хиты!
Когда: 21 ноября, МТС Live Холл в Москве и онлайн.
Регистрируйся на сайте.
Бесплатное участие, количество мест ограничено.
Это #партнёрский пост
Юн Цуй «Рецепты Python. Коллекция лучших техник программирования»
Если вам уже попадалась постепенно усложняющаяся книга по языку, которую труднее читать к концу, то в этот раз будет по-другому. В книге Юн Цуй собрал 63 самых полезных, по его мнению, навыков Python-разработчика, К примеру, в одной из глав задача ««Как найти элементы в последовательности?» получает сначала базовое решение, а потом дополняется еще двумя.
#обучение
@zen_of_python
Если вам уже попадалась постепенно усложняющаяся книга по языку, которую труднее читать к концу, то в этот раз будет по-другому. В книге Юн Цуй собрал 63 самых полезных, по его мнению, навыков Python-разработчика, К примеру, в одной из глав задача ««Как найти элементы в последовательности?» получает сначала базовое решение, а потом дополняется еще двумя.
#обучение
@zen_of_python
🔥2❤1
Python for Everyone | Короткие видеотуториалы
Англоязычный YouTube-канал, прекрасно «грокающий» различные концепции языка, будь то декораторы, миксины или полиморфизм. Каждый ролик — кустарный мультфильм с демонстрацией предельно понятного кода.
#обучение
@zen_of_python
Англоязычный YouTube-канал, прекрасно «грокающий» различные концепции языка, будь то декораторы, миксины или полиморфизм. Каждый ролик — кустарный мультфильм с демонстрацией предельно понятного кода.
#обучение
@zen_of_python
✍1
Вопросы подписчиков
Zen of Python поддерживает новоприбывших (и не только) в особой рубрике. Как это работает:
— Спрашивайте что угодно (в комментариях под этим постом), связанное с Python. Здесь нет плохих вопросов!
— Сообщество вас поддержит. Самые интересные вопросы мы разберём в отдельном посте.
#обсуждение
@zen_of_python
Zen of Python поддерживает новоприбывших (и не только) в особой рубрике. Как это работает:
— Спрашивайте что угодно (в комментариях под этим постом), связанное с Python. Здесь нет плохих вопросов!
— Сообщество вас поддержит. Самые интересные вопросы мы разберём в отдельном посте.
#обсуждение
@zen_of_python
Пользователь Reddit поделился Python-библиотекой для быстрых запросов к файловой системе и выполнения действий над найденными файлами.
Основная идея: вместо кучи строк кода,
Т.е. найти логи старше 7 дней и больше 10 МБ.
Выглядит удобно, но как-то не очень pythonic, вам не кажется? Как будто если делаешь что-то SQL-like, то лучше напрямую SQL и взять, а не изобретать мини-язык внутри Python. И это как раз самое интересное — в комментах начали предлагать как можно сделать лучше.
Например, вот так:
Добавить обёртку, которая будет вычислять необходимые свойства по запросу с использованием
Или использовать модуль
А может вообще что-то lisp-подобное:
Или добавить callable-объекты, которые можно передавать в фильтры, получится куда более нативно:
Лично мне, админу канала @zen_of_python, последний вариант кажется самым удобным. Не самый привычный синтаксис, но читается однозначно. И возможность задавать время и размер файлов в привычных единицах — тоже плюс.
Если для ускорения добавить конкурентность и кэширование, как сделал автор исходной библиотеки, то получится прекрасный инструмент.
А какой стиль вам больше понравился? Как бы вы реализовали?
Основная идея: вместо кучи строк кода,
os.stat и datetime писать так:query = Query(
where_expr=(AgeDays() > 7) & (Size() > "10 mb") & Suffix(".log"),
from_paths="C:/logs",
threaded=True
)
result_set = query.select()
Т.е. найти логи старше 7 дней и больше 10 МБ.
Выглядит удобно, но как-то не очень pythonic, вам не кажется? Как будто если делаешь что-то SQL-like, то лучше напрямую SQL и взять, а не изобретать мини-язык внутри Python. И это как раз самое интересное — в комментах начали предлагать как можно сделать лучше.
Например, вот так:
query(lambda p: p.age_days < 7 and p.size > 10_000_000 and p.suffix == ".log")
Добавить обёртку, которая будет вычислять необходимые свойства по запросу с использованием
cached_property и получим по сути то же самое, но проще.Или использовать модуль
ast и такой синтаксис:query("age_days < 7 and size > 10_000_000 and suffix == '.log'")А может вообще что-то lisp-подобное:
query(("and", ("age_days", ">", 7),
("size", ">", 10_000_000),
("suffix", "==", ".log")))Или добавить callable-объекты, которые можно передавать в фильтры, получится куда более нативно:
dir = pathlib.Path('/var')
for file in filter(OlderThan(days=7) & LargerThan(MB=10),dir.rglob("*")):
print(file.as_posix())Лично мне, админу канала @zen_of_python, последний вариант кажется самым удобным. Не самый привычный синтаксис, но читается однозначно. И возможность задавать время и размер файлов в привычных единицах — тоже плюс.
Если для ускорения добавить конкурентность и кэширование, как сделал автор исходной библиотеки, то получится прекрасный инструмент.
А какой стиль вам больше понравился? Как бы вы реализовали?
🔥6
Какую версию Python взять, чтобы всё работало без лишних проблем?
С одной стороны, хочется более свежую: в 3.14 завезли free-threading и вообще много чего улучшили по производительности. Но не все библиотеки ещё подтянулись. Например, Numba ещё 3.14 не поддерживает.
Хороший совет — вооружитесь uv и последовательно пробуйте все версии начиная с самой свежей. Первая, которая заработает, и будет вашей. По сути самая свежая из тех, которую поддерживают все зависимости у вас в проекте.
Также полезно посмотреть на релизный цикл (на картинке к посту). Очевидно не стоит брать версии, которые уже не поддерживаются. Спускаться ниже 3.10 будет не самым безопасным вариантом. Ровно как и пробовать то, что ещё не выпущено официально — на 3.15 заглядываться рановато.
По состоянию на ноябрь 2025 версия 3.13 выглядит хорошей золотой серединой. Почти все уже успели добавить поддержку, а от ведущей 3.14 отставание всего на один шаг.
А какие версии вы используете у себя в проектах?
#обсуждение
@zen_of_python
С одной стороны, хочется более свежую: в 3.14 завезли free-threading и вообще много чего улучшили по производительности. Но не все библиотеки ещё подтянулись. Например, Numba ещё 3.14 не поддерживает.
Хороший совет — вооружитесь uv и последовательно пробуйте все версии начиная с самой свежей. Первая, которая заработает, и будет вашей. По сути самая свежая из тех, которую поддерживают все зависимости у вас в проекте.
Также полезно посмотреть на релизный цикл (на картинке к посту). Очевидно не стоит брать версии, которые уже не поддерживаются. Спускаться ниже 3.10 будет не самым безопасным вариантом. Ровно как и пробовать то, что ещё не выпущено официально — на 3.15 заглядываться рановато.
По состоянию на ноябрь 2025 версия 3.13 выглядит хорошей золотой серединой. Почти все уже успели добавить поддержку, а от ведущей 3.14 отставание всего на один шаг.
А какие версии вы используете у себя в проектах?
#обсуждение
@zen_of_python
❤4👻3
Свежий пет-проект от (видимо) скучающего на досуге питониста — терминальный Git‑клиент на чистом Python, вдохновлённый LazyGit; ставится через pip и работает без внешнего git CLI. Попробовать:
Что даёт: навигация по коммитам, просмотр diff, панель статусов файлов в стиле VSCode, ветко‑зависимая история и индикаторы «пушнуто/локально» без вызова системного git.
Зачем: когда в окружении нельзя ставить ничего кроме Python‑пакетов, нужен «чисто Python» инструмент для Git с удобной навигацией и минимумом интеграций.
Автор просит фидбек по недостающим функциям и удобству UI, так что можете отписаться в репозитории. Вам плюсик в карму, автор порадуется.
Проект, послуживший вдохновением: https://github.com/jesseduffield/lazygit
Ну и, конечно, кто-то написал аналог на Rust, чтобы было ультра-быстро, а скорее просто потому что может: https://github.com/gitui-org/gitui
Как вам такие поделки? Как минимум романтично же, консольные клиенты как будто пахнут старыми добрыми временами, вы не находите?
@zen_of_python
pip install pygitzen.Что даёт: навигация по коммитам, просмотр diff, панель статусов файлов в стиле VSCode, ветко‑зависимая история и индикаторы «пушнуто/локально» без вызова системного git.
Зачем: когда в окружении нельзя ставить ничего кроме Python‑пакетов, нужен «чисто Python» инструмент для Git с удобной навигацией и минимумом интеграций.
Автор просит фидбек по недостающим функциям и удобству UI, так что можете отписаться в репозитории. Вам плюсик в карму, автор порадуется.
Проект, послуживший вдохновением: https://github.com/jesseduffield/lazygit
Ну и, конечно, кто-то написал аналог на Rust, чтобы было ультра-быстро, а скорее просто потому что может: https://github.com/gitui-org/gitui
Как вам такие поделки? Как минимум романтично же, консольные клиенты как будто пахнут старыми добрыми временами, вы не находите?
@zen_of_python
🔥11❤2
Media is too big
VIEW IN TELEGRAM
Как провести проверку типов в 1,8 миллионах строчек Python-кода за секунду? Нил Митчел рассказывает как новый тайп-чекер Pyrefly достигает такой скорости (дубляж на русский).
Аннотации типов появились ещё в 2014 году и с тех пор стали значительно сложнее: дженерики, подтипы, flow types, field refinement и другие не всем даже известные слова. Pyrefly моделирует и проверяет эту сложную систему и делает это быстро.
В принципе тем же самым занимается uv ty, но у ребят из Astral немного другой подход: дать пользу программисту аккуратно, не ошибиться случайно в коде, который хоть и без типов, но теоретически может быть валидным. Можно сказать, что Pyrefly более агрессивный и стабильный, хотя оба проекта ещё в альфе.
Попробовать можно прям на сайте проекта: pyrefly.org/sandbox
Что ж, наконец-то кто-то сможет угнаться за скоростью написания вайб-кода и проверить хотя бы типы.
@zen_of_python
Аннотации типов появились ещё в 2014 году и с тех пор стали значительно сложнее: дженерики, подтипы, flow types, field refinement и другие не всем даже известные слова. Pyrefly моделирует и проверяет эту сложную систему и делает это быстро.
В принципе тем же самым занимается uv ty, но у ребят из Astral немного другой подход: дать пользу программисту аккуратно, не ошибиться случайно в коде, который хоть и без типов, но теоретически может быть валидным. Можно сказать, что Pyrefly более агрессивный и стабильный, хотя оба проекта ещё в альфе.
Попробовать можно прям на сайте проекта: pyrefly.org/sandbox
Что ж, наконец-то кто-то сможет угнаться за скоростью написания вайб-кода и проверить хотя бы типы.
@zen_of_python
❤1👍1
Совет управляющих Python одобрил два PEP — 798 про распаковку в comprehensions и 810 про явные ленивые импорты, оба целятся в Python 3.15.
PEP 798 добавляет возможность применять распаковку прямо в comprehensions и генераторах: можно использовать символы звездочки для объединения и слияния, например
PEP 810 вводит явный синтаксис ленивых импортов:
P.S. Кто такие эти ваши «совет управляющих»? После ухода Гвидо с роли BDFL в 2018 сообщество приняло модель управления PEP 8016 — стратегию языка и финальные решения по PEP принимает избираемый из core-разработчиков Совет из пяти человек. Этот Совет переизбирается после каждого мажорного релиза голосованием среди core-dev’ов и выступает финальным арбитром по спорным вопросам развития языка.
PEP 798 добавляет возможность применять распаковку прямо в comprehensions и генераторах: можно использовать символы звездочки для объединения и слияния, например
[*it for it in its] или {**d for d in dicts}. Приняли с оговоркой: и синхронные, и асинхронные генераторные выражения должны использовать явные циклы, без yield from, чтобы сохранить простой и единый стиль, ближе к поведению itertools.chain.from_iterable.PEP 810 вводит явный синтаксис ленивых импортов:
lazy import json и lazy from json import dumps, когда модуль реально загрузится только при первом обращении к имени — полезно для ускорения старта и экономии памяти. Совет уточнил детали: .pth не поддерживают ленивые импорты, появится sys.get_lazy_imports(), и будет зафиксирован приоритет между переменной окружения, флагом -X и вызовами sys.set_lazy_imports(), при этом стилистические правила сортировки оставят линтерам и форматтерам.P.S. Кто такие эти ваши «совет управляющих»? После ухода Гвидо с роли BDFL в 2018 сообщество приняло модель управления PEP 8016 — стратегию языка и финальные решения по PEP принимает избираемый из core-разработчиков Совет из пяти человек. Этот Совет переизбирается после каждого мажорного релиза голосованием среди core-dev’ов и выступает финальным арбитром по спорным вопросам развития языка.
🔥7❤4
В Python 3.14 появилось фишка, которая реально меняет дебаг live-процессов: безопасный внешний интерфейс отладки по PEP 768, который позволяет подключаться к уже запущенному питоновскому процессу по PID — без перезапуска и без ломания рантайма на ровном месте. В практическом виде это значит, что теперь можно сделать обычный attach встроенным pdb:
Главная фишка — все происходит в «безопасных точках» интерпретатора, без хака с инъекцией машинного кода через ptrace/LLDB и без риска словить краш, гонки за GIL или порчу памяти при сборке мусора. Интерфейс кооперируется с eval loop CPython и просто просит интерпретатор выполнить небольшой скрипт, когда это безопасно; под капотом для этого добавили пару полей в PyThreadState и используют существующий eval_breaker, поэтому накладных расходов в обычном режиме нет.
Для инструментов завезли
Если хотите детали и хороший разбор, у surister вышел пост после выступления Пабло Галиндо (соавтора PEP): там с примерами, почему старые подходы были хрупкими, и как новый протокол делает attach нормальным инструментом, а не рулеткой с падениями.
Ещё раз супер-кратко: теперь attach к живому Python — это стандартная возможность CPython 3.14, с нулевой ценой в рантайме и без трюков уровня «инжектим код в произвольной точке», что сильно упрощает жизнь при отладке долгоживущих сервисов и edge/IoT кейсов.
А вы знали, что так можно?
python -m pdb -p <PID>, залезть внутрь, посмотреть состояние, выполнить код — как будто запускал под отладчиком с самого начала.Главная фишка — все происходит в «безопасных точках» интерпретатора, без хака с инъекцией машинного кода через ptrace/LLDB и без риска словить краш, гонки за GIL или порчу памяти при сборке мусора. Интерфейс кооперируется с eval loop CPython и просто просит интерпретатор выполнить небольшой скрипт, когда это безопасно; под капотом для этого добавили пару полей в PyThreadState и используют существующий eval_breaker, поэтому накладных расходов в обычном режиме нет.
Для инструментов завезли
sys.remote_exec(pid, path_to_script): можно подложить .py-файл и он выполнится в целевом процессе при первой возможности, что удобно для быстрых диагностик: распечатать стек, проверить состояние, собрать метрики, даже если это прод и процесс нельзя трогать. Момент важный для продакшена и безопасности: механизм можно отключить через переменные/флаги (PYTHON_DISABLE_REMOTE_DEBUG, -X disable-remote-debug, сборка без поддержки), а любые вызовы проходят через audit hooks, так что всё прозрачно и контролируемо для админов.Если хотите детали и хороший разбор, у surister вышел пост после выступления Пабло Галиндо (соавтора PEP): там с примерами, почему старые подходы были хрупкими, и как новый протокол делает attach нормальным инструментом, а не рулеткой с падениями.
Ещё раз супер-кратко: теперь attach к живому Python — это стандартная возможность CPython 3.14, с нулевой ценой в рантайме и без трюков уровня «инжектим код в произвольной точке», что сильно упрощает жизнь при отладке долгоживущих сервисов и edge/IoT кейсов.
А вы знали, что так можно?
This media is not supported in your browser
VIEW IN TELEGRAM
🔥4