Logo
TGCATALOG
Catalog Collections Blog
Zen of Python - Zen

Zen of Python - Zen

Complete guide to Python philosophy and practice in one channel.

No ratings
910
25.10.2026
910
25.10.2026
No ratings
910
25.10.2026
Safe redirect via bot
О канале

Complete guide to Python philosophy and practice in one channel.

Подписчиков 18,744
Тематика IT
Язык English
Ссылка t.me/zen_of_python
Description

Zen of Python - channel dedicated to Python philosophy and practices. Lessons, scripts, best practices and materials for mastering the language in Telegram.

Latest posts

Zen of Python - Zen
Zen of Python - Zen
🔒Открыть пост
и посмотреть медиа
Как подключать pytest-фикстуры без лишних аргументов теста Иногда фикстура нужна только ради побочного эффекта: например, перед тестом она подменяет os.environ. Если добавить её в параметры функции, pytest всё выполнит, но IDE подсветит неиспользуемый аргумент. Автор избегает autouse=True: по его оценке, так о тестах труднее рассуждать. Декоратор @pytest.mark.usefixtures с именем mock_env назначает фикстуру конкретному тесту. Pytest запускает mock_env, а в сигнатуре остаются только объекты, к которым код обращается напрямую. Декоратор принимает несколько имён фикстур, но помечать им другую фикстуру нельзя. В короткой статье с примером показано, как убрать серый неиспользуемый параметр и сохранить зависимость на виду. Явность победила, сигнатура тоже.
Zen of Python - Zen
Zen of Python - Zen
🔒Открыть пост
и посмотреть медиа
Как получать стабильный хеш Python-объектов Встроенный hash() для этого не подходит: хеши строк и bytes меняются между процессами, а списки, словари и изменяемые dataclass он не принимает. hashlib детерминирован, но ждёт байты. Значит, сначала объект надо привести к однозначному набору байтов. Автор разбирает, почему pickle не обещает одинаковый поток байтов, а str и repr могут терять значимые данные или включать адрес объекта. Решение строится на JSON: встроенные типы, datetime и dataclass приводятся к поддерживаемому представлению, неподдерживаемые значения вызывают ошибку, пустые и выбранные поля можно пропустить. В статье есть требования, промежуточные неудачные варианты и итоговый код без сторонних зависимостей. Подход пригодится, если хеш хранится дольше одного процесса или должен совпадать в разных реализациях Python.
Zen of Python - Zen
Zen of Python - Zen
🔒Открыть пост
и посмотреть медиа
Когда namedtuple всё ещё лучше dataclass После появления dataclass именованный кортеж перестал быть универсальной заменой маленькому классу. Он всегда поддерживает индексацию и распаковку, поэтому новое поле ломает код с распаковкой, а публичный API рискует навсегда сохранить кортежный протокол. Это же поведение полезно, когда данные естественно упорядочены: строки БД, результаты разбора бинарного формата, пары заголовков HTTP. Если API уже возвращает обычный кортеж, namedtuple добавит имена полей, не сломав прежних потребителей. Можно и намеренно распаковывать все поля: забытый обработчик упадёт сразу после изменения структуры. Явное лучше неявного, как и договаривались. В разборе namedtuple и dataclass автор также сравнивает память и скорость. На миллионах экземпляров разница может стать заметной, а в большинстве программ она несущественна.
Zen of Python - Zen
Zen of Python - Zen
🔒Открыть пост
и посмотреть медиа
Космический хакатон. Санкт-Петербург, Красноярск или онлайн из любой точки страны. Старт 18 сентября. Для разных городов разные задачи, а за выходные участники должны представить рабочие решения. Санкт-Петербург. К 2035 году над Землёй должен работать топливный узел, у которого заправляются корабли, и откуда он будет получать топливо — с Земли, с Луны или из резерва — пока не решил никто. Команде предстоит собрать схему поставок, посчитать резервы и решить, во что вкладываться сразу. Призовой фонд 1,2 млн ₽. Красноярск. Спутник видит горящий лес раньше любого наземного поста, но вместе с пожаром ловит нагретые крыши, факелы на месторождениях и блики на воде. Команде предстоит научить сервис отличать настоящий очаг от шума, обвести гарь и выдать площадь в гектарах. Призовой фонд 600 тыс. ₽. Лучшие забирают приз на площадке и билет в финал в Москве, 25–27 сентября, где разыграют ещё 2,4 млн рублей. Команда 3–5 человек, недостающих можно найти на платформе. Регистрация по ссылке — космохакатон.рф
Zen of Python - Zen
Zen of Python - Zen
🔒Открыть пост
и посмотреть медиа
Как изолировать Pydantic Settings от окружения в pytest Если Settings создаётся при импорте пакета, он читает .env и переменные оболочки до запуска фикстуры pytest. Подмена os.environ запаздывает: значения уже сохранены в объекте, а тест зависит от окружения. Решение автора: фикстура сохраняет model_copy() объекта, сбрасывает поля к значениям по умолчанию из model_fields и применяет точечные переопределения. Неизвестные настройки и неверные типы она отклоняет, после yield восстанавливает исходное состояние. Подход пригодится, когда Settings уже живёт на уровне модуля. Явное снова лучше неявного. Код фикстуры и тесты со значениями по умолчанию и частичными переопределениями смотрите в разборе подмены Pydantic Settings.
Zen of Python - Zen
Zen of Python - Zen
🔒Открыть пост
и посмотреть медиа
Как устроен асинхронный веб-краулер на Python Обстоятельная глава строит краулер с нуля: от корневого URL он скачивает страницы, извлекает новые ссылки и ставит их в очередь. Число одновременных запросов ограничивают, чтобы избыток конкуренции не снижал производительность. Разбор идёт от цикла событий с неблокирующими сокетами и колбэками к корутинам на генераторах, а затем к asyncio с асинхронной очередью. Переходы показывают, как избежать неуправляемых цепочек колбэков. Асинхронность не означает параллельные вычисления и не обязана быть быстрее потоков. Она подходит для множества медленных соединений с редкими событиями, где поток на каждый запрос расходует память и упирается в системные ограничения. В главе «A Web Crawler With asyncio Coroutines» из 500 Lines or Less код написан для Python 3.4. Читайте ради механики цикла событий; перед копированием сверяйте API с документацией.
Zen of Python - Zen
Zen of Python - Zen
🔒Открыть пост
и посмотреть медиа
Почему mock.patch не подменяет функцию в Python После from os import listdir имя listdir привязано в модуле product. Последующая подмена os.listdir эту привязку не меняет, поэтому код продолжает вызывать product.listdir. mock.patch работает как временное присваивание: заменяет имя по указанному пути, а после блока with возвращает исходное значение. Практическое правило: подменяйте имя там, где его ищет тестируемый код. Здесь нужен mock.patch("product.listdir"). Он изменит поведение только product.py, не затрагивая другие модули. В статье Why your mock doesn’t work механизм разобран на двух способах импорта и схемах связей между именами.
Zen of Python - Zen
Zen of Python - Zen
🔒Открыть пост
и посмотреть медиа
Наследование, композиция или функции: сравниваем на Executor в Python Статья сравнивает три реализации гибридного исполнителя задач: наследование, композицию и функции. Он разносит работу по процессам, а внутри каждого запускает потоки, чтобы I/O-нагрузка использовала все ядра, когда упирается в CPU. Наследник ProcessPoolExecutor переопределяет __init__, submit() и shutdown(), а map() и контекстный менеджер получает от родителя. При композиции map() приходится копировать для вызова нового submit(), а контекстный протокол писать заново. «Явное лучше неявного» внезапно означает больше кода. В разборе решения сравниваются по совместимости с будущими версиями, глобальному состоянию, сложности и отладке. Для полноценной замены считайте не только связи между классами, но и методы, которые придётся делегировать вручную.
Zen of Python - Zen
Zen of Python - Zen
🔒Открыть пост
и посмотреть медиа
Как быстрее загружать грязные данные в PostgreSQL из Python Автор берёт постраничный API с данными о пиве, превращает его в генератор и перед записью нормализует поля: извлекает объём из вложенного объекта, а месяц и год приводит к дате. Для замеров 325 записей дублируются 100 раз, получается набор из 32 500 строк. Затем импорт сравнивается через построчные INSERT, executemany, execute_batch, execute_values и COPY. Для пакетных вариантов с итераторами меняется размер страницы, для COPY из строкового итератора — размер буфера. У каждого подхода измеряются время и пиковая память. Явное лучше неявного, особенно когда скорость не приходится угадывать. В подробном разборе есть код генератора, преобразований, профилировщика и всех вариантов загрузки. Его удобно использовать как основу замера на реальных данных.
Zen of Python - Zen
FAQ

Open Zen of Python - Zen in Telegram and press the Start button. No separate registration is required.

Yes. The service is designed to be straightforward: open the resource, follow the on-screen instructions and start using it.

No. You can use Zen of Python - Zen directly in Telegram unless the resource description says otherwise.

Access depends on the resource. Check the current information in Telegram after opening Zen of Python - Zen.

The exact features depend on the resource. Open Zen of Python - Zen to see its current functions, content and access conditions.
Subscriber dynamics
+-0.4% last 30 days
Current
18,744
Month ago
18,817
Average growth
+-2 / day
Updated
3 hours ago

Reviews for channel Zen of Python - Zen

Log in to leave a review

Only registered users can share their opinion.

No reviews yet

Be the first to share your impression of this resource!

Similar resources

Loading
Switch to Light Theme
Home Catalog Collections Blog Login