Веб-версияОткрыть в Telegram

ПостПолагаю, все однажды видели или использовали вот эту конструкцию:

14 июня 2020
П
Пингвитон
Полагаю, все однажды видели или использовали вот эту конструкцию: try: <какой-то код> except <какой-то тип эксепшена>: pass Это обычный способ реализации логики вида "нужно поймать эксепшен конкретного типа, проигнорировать его и продолжить работу". В стандартной библиотеке есть более лаконичный способ: from contextlib import suppress with suppress(<какой-то тип эксепшена>): <какой-то код> Это контекстный менеджер suppress, который импортируется из модуля contextlib. Ему передаётся тип эксепшена (или типы, можно несколько, да), который необходимо "проглотить", дальше в теле with пишем код, который эти эксепшены может выкинуть. Если эксепшен возникнет, он будет пойман и проигнорирован, а управление перейдёт к первой строчке после блока with. Документация стандартной библиотеки напоминает, что "как и с любым другим механизмом, полностью подавляющим эксепшены, этот контекстный менеджер следует использоваться только в конкретных специфических случаях, когда молчаливое продолжение работы программы после возникновения эксепшена точно является правильным поведением". В общем, не глотайте эксепшены без повода, процесс дебага может стать очень болезненным (: Хороший пример, когда этот контекстный менеджер удобно использовать, -- удаление файла. Я хочу почистить старые файлы перед запуском программы, но может быть так, что это первый запуск и старых файлов ещё не накопилось. Делаю так: with suppress(FileNotFoundError): os.remove('my-file.txt') Этот контекстный менеджер доступен, начиная с Python 3.4. Если вы используете более старые версии Питона, то вы можете добавить в проект собственную реализацию, которая будет выглядеть так: from contextlib import contextmanager @contextmanager def suppress(*exceptions): try: yield except exceptions: pass
3 · 400 ·

Рядом в ленте

ППингвитонУ меня есть большой файл, который я хочу передать другому человеку. Если я нахожусь с ним в одной сети, мне не понадобится медленно и печально выкладывать его нППингвитонФотография
это сообщение
ППингвитонЯ тут писала письмо пользователям, где доносила мысль, что для влючения некоторого функционала нужно добавить переменную в конфиг. И для облегчения пользовательППингвитонНесколько минут назад недоумённо смотрела на это: # python3 >>> round(7.5) 8 >>> round(10.5) 10 Вы видите то, что вижу я? 7.5 округляется вверх, а 10.5 округляе
ППингвитонПингвитон@linuxpytipsntricks · канал · Технологии
151подписчиков62постов в индексе
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем