Logo
TGCATALOG
Каталог Подборки Блог
Код на салфетке - Python кодинг

Код на салфетке - Python кодинг

Канал о программировании на Python и других языках. Простые объяснения и коды.

Нет оценок
315
25.10.2026
315
25.10.2026
Нет оценок
315
25.10.2026
Безопасный переход через бот
О канале

Канал о программировании на Python и других языках. Простые объяснения и коды.

Подписчиков 2,345
Тематика Технологии
Язык Русский
Ссылка t.me/napkincode

Также рекомендуем

Kekaton AI | Озвучка и клон голоса
Kekaton AI | Озвучка и клон голоса
Бот

AI бот для озвучки текста и клонирования голоса в Telegram. Создавай аудио с помощью нейросети быстро и просто.

Описание

Ресурс для интересующихся программированием. Фокус на Python, но охватывает и другие темы. Простые примеры и разборы.

Последние посты

Код на салфетке - Python кодинг
Код на салфетке - Python кодинг
🔒Открыть пост
и посмотреть медиа
Знаете ли вы, что один True может скрыть исключение внутри with? При выходе из with Python вызывает __exit__ и передает туда сведения об исключении, если оно возникло. Если исключение было, то ложное значение, включая None, пропускает исключение дальше; истинное сообщает Python, что оно обработано. При обычном выходе все три аргумента __exit__ равны None, а возвращаемое значение ни на что не влияет: class Ignore: def __enter__(self): return self def __exit__(self, exc_type, exc, tb): return True with Ignore(): 1 / 0 print("эта строка не выполнится") print("а эта выполнится") # а эта выполнится ZeroDivisionError возникает и прерывает выполнение тела блока – print внутри with не выполняется. Но __exit__ вернул True, поэтому исключение не выходит за пределы блока, а traceback необработанного исключения не выводится. Еще __exit__ может случайно вернуть истинное значение, пробросив результат другого метода: class Connection: def __enter__(self): return self def close(self): print("соединение закрыто") return True def __exit__(self, exc_type, exc, tb): return self.close() with Connection(): raise RuntimeError("запрос не прошел") print("выполнение продолжилось") # соединение закрыто # выполнение продолжилось Допустим, метод close() в этом API возвращает True как признак успешного закрытия. Но __exit__ передает этот результат дальше, и Python считает его обработанным исключением. Достаточно написать self.close() без return, и RuntimeError дойдет до вызывающего кода. Осознанное подавление выглядит так же, только с явной проверкой типа исключения: class SuppressZero: def __enter__(self): return self def __exit__(self, exc_type, exc, tb): return isinstance(exc, ZeroDivisionError) with SuppressZero(): 1 / 0 print("выполнение продолжилось") with SuppressZero(): int("текст") # ValueError: invalid literal for int() with base 10: 'текст' Деление на ноль гасится, а ValueError распространяется дальше, потому что для него __exit__ вернул False. По тому же протоколу работает contextlib.suppress из стандартной библиотеки: он подавляет указанные классы исключений и их подклассы. Возвращаемое значение __exit__ решает, выйдет ли возникшее исключение за пределы блока with: любое истинное значение останавливает его распространение. Если __exit__ не должен подавлять ошибки, заканчивайте метод без return или явно возвращайте False. Для намеренного локального подавления используйте contextlib.suppress(...), перечисляя только ожидаемые типы исключений. Код на салфетке × Кусочки кода
Код на салфетке - Python кодинг
Динамика подписчиков
+-0.5% за 30 дней
Текущие
2,345
Месяц назад
2,356
Средний рост
+0 / день
Обновлено
1 день назад

Отзывы о канале Код на салфетке - Python кодинг

Авторизуйтесь, чтобы оставить отзыв

Только зарегистрированные пользователи могут делиться своим мнением.

Пока нет отзывов

Станьте первым, кто поделится своим впечатлением об этом ресурсе!

Похожие ресурсы

Loading
Переход на светлую тему
Главная Каталог Подборки Блог Вход