и посмотреть медиа
Zen of Python - дзен
и посмотреть медиа
Полный гид по философии и практике Python в одном канале.
Полный гид по философии и практике Python в одном канале.
Zen of Python - канал, посвящённый философии и практикам Python. Уроки, скрипты, лучшие практики и материалы для освоения языка в Telegram.
Сотни тысяч корутин лучше не запускать разом Если запустить всю пачку асинхронных операций сразу, вы нагрузите вызываемые сервисы, а всё необходимое для работы окажется в памяти одновременно. Ограничение конкурентности нужно до того, как очередь съест ресурсы. Питоничная цель напоминает imap_unordered(): одновременно выполнять не больше limit операций и отдавать результаты по мере готовности. asyncio.Semaphore кажется очевидным ответом из Stack Overflow, но автор предупреждает: лучший вариант другой. В разборе ограничения конкурентности сопоставлены gather(), Semaphore, as_completed(), Queue и wait(). Читайте, чтобы понять, почему автор выбрал wait() и как собрал асинхронный map_unordered() с поддержкой итерируемых объектов и исключений.
Открыть канал и посмотреть медиаДескриптор может удерживать ваши объекты, но слабые ссылки это исправят Вы удалили экземпляр, а память не освободилась. Причина может прятаться в дескрипторе: если он записывает проверенные экземпляры в обычный dict, словарь сохраняет сильные ссылки. Сборщик мусора не удалит такие объекты, и утечка будет расти понемногу. Если хранить сами экземпляры всё-таки нужно, замените словарь на слабый: import weakref _seen = weakref.WeakKeyDictionary() Слабый ключ не мешает сборщику удалить объект, когда на него больше нет сильных ссылок. Питонично: сообщаем, кого видели, но не берём опеку над его временем жизни. В разборе Memory leakage in Python descriptors есть полный пример утечки и её исправления. Проверьте дескрипторы, которые копят экземпляры после валидации.
Открыть канал и посмотреть медиаTrame v4 добавил управление React-компонентами из Python При создании приложения на Python-фреймворке trame теперь можно выбрать client_type="react" и сохранить привычные механизмы состояния, событий и триггеров. Связки react.Bind и react.Callback синхронизируют серверную логику с интерфейсом — без отдельного REST API и самописного обмена данными. Обновление прежде всего пригодится организациям с готовыми React-библиотеками и дизайн-системами: их можно задействовать без полной переделки фронтенда. Но смены фаворита пока нет — Vue.js остаётся стандартным и наиболее полным клиентом, а Kitware не обещает паритета возможностей. В статье перечислены поддерживаемые на старте компоненты и варианты рендеринга.
Открыть канал и посмотреть медиаНаучные библиотеки сошлись на 3.14t как общей цели free-threading Если вы держите отдельное окружение под сборку без GIL, зоопарк собранных колёс наконец сокращается: поддержку 3.13t крупные научные библиотеки убрали и целятся теперь только в 3.14t. Проверять свой код на свободных потоках можно на одной версии, а не на двух. Что ещё случилось за август, Real Python собрал в месячном дайджесте: • Python 3.15 выпустил финальную бету; • команда JIT ответила Steering Council на его ультиматум; • Astral выкатила ломающие миноры uv и Ruff: перед обновлением стоит заглянуть в changelog; • MCP пережил крупнейшую переписку с момента появления: сессии выброшены, протокол стал stateless, а FastMCP в Python SDK переименовали. #cpython
Открыть канал и посмотреть медиаКод без GIL запускается одной командой, а зависимости к этому готовы не все Проверка занимает вечер: ставите сборку python3.14t, прогоняете тесты и смотрите, где C-расширение роняет интерпретатор, а где два потока портят общий словарь. Со стороны CPython работа сделана: в 3.13 сборку без глобальной блокировки отдавали как экспериментальную, в 3.14 она стала официально поддерживаемой. Узкое место переехало в экосистему: пакет с C-кодом заводится в такой сборке, только если его пересобрали и проверили под неё. На PyCon US 2026 Томас Ваутерс, который занимается CPython 25 лет и входит в steering council, прошёл по всей истории: зачем блокировку вообще снимали, что из этого получилось к сегодняшнему дню и станет ли сборка без GIL единственной. Конспект доклада опубликовал LWN. #cpython
Открыть канал и посмотреть медиаДиалап, Winamp, Живой Журнал — вспомни всё и за пару минут узнай свой цифровой архетип.
Открыть канал и посмотреть медиаСообщение об ошибке в Python подсказывает, где сломался код, если читать его с конца Программа упала, в терминале простыня красного текста, которую хочется закрыть не читая. А имя ошибки и пояснение стоят в последней строке. NameError: переменной с таким именем нигде не создано, обычно опечатка. IndexError: вы просите шестой элемент у списка из пяти. Строки выше показывают файл и номер строки, где всё оборвалось. Когда имя понятно, а причина нет, ставьте print перед подозрительным местом и сверяйте значения переменных с тем, что ожидали. Если print становится слишком много, включайте встроенный отладчик pdb: он останавливает программу в нужной точке и показывает значения прямо там. Хендбук freeCodeCamp по отладке разбирает имена ошибок подробнее и учит работать с pdb. Возьмите ошибку, на которой застряли недавно, и разложите её по схеме: имя, пояснение, номер строки. #python #основы
Открыть канал и посмотреть медиаЯзык, на котором вы пишете каждый день, десятый год подряд оплачивает в том числе Meta* Python Software Foundation живёт на пожертвованиях, и Meta* десятый год подряд числится среди спонсоров. Python у них самый используемый язык, на нём держится бэкенд Instagram* и Threads*. Деньгами участие не ограничивается. Часть core-разработчиков CPython работает в Meta*: они пишут фичи и PEP'ы, так что каким язык станет в следующем релизе, решают в том числе люди на зарплате компании. Оттуда же вышел PyTorch, позже переехавший в собственный фонд, и Pyrefly, тайпчекер с language server, который в компании называют очень быстрым. Последнее проверяется дешевле, чем обсуждается: если mypy на вашем проекте прогоняется минутами, поставьте Pyrefly рядом и сравните время на том же коде. #cpython *Компания Meta и её продукты признаны экстремистскими, их деятельность запрещена на территории РФ.
Открыть канал и посмотреть медиаdeepcopy копирует всё, до чего дотянется, включая то, что вы копировать не собирались Знакомая поломка: конфиг сложили в словарь, сделали copy.copy, поправили вложенный список в клоне и увидели правку в оригинале. Новый контейнер получает те же ссылки на вложенные объекты. copy.deepcopy идёт по графу рекурсивно и ведёт словарь memo: каждый скопированный объект запоминается по id. Циклическая ссылка поэтому не уводит копирование в бесконечность, а два поля, смотревшие на один список, в копии тоже смотрят на один. Плата — обход всего графа: объект, который держит открытый сокет или пул соединений, deepcopy либо уронит, либо утащит за собой пол-приложения. Поведение настраивается методами __copy__ и __deepcopy__: класс сам решает, что воспроизвести заново, а что отдать по ссылке. Разбор поверхностной и глубокой копии — в статье на dev.to. #python
Открыть канал и посмотреть медиаТолько зарегистрированные пользователи могут делиться своим мнением.
Станьте первым, кто поделится своим впечатлением об этом ресурсе!