«Классы исключений могут быть определены так, чтобы делать все, что может делать любой другой класс, но обычно они остаются простыми, часто предлагая только ряд атрибутов,
которые позволяют извлекать информацию об ошибке».
«Все встроенные исключения наследуются от Exception. Когда исключение вызывается,
оно может иметь связанное значение, также известное как аргумент исключения».
«Exception.args - Кортеж аргументов, переданных конструктору исключения».
В нашем случае:
1. MyExc('spam') создает экземпляр исключения с аргументом 'spam'
2. X.args содержит кортеж всех аргументов конструктора
3. Поэтому X.args = ('spam',) - кортеж с одним элементом
👍1👎1
Пишешь на Go? Колонизаторам Марса нужна твоя помощь
Да, ты не ослышался. Вместе с «МойОфис» сделали игру, в которой нужно спасти марсианских колонизаторов от песчаной бури. И сделать это могут только гоферы.
Реши задачи по Go и помоги героям! Первые 10 игроков с максимальным результатом за минимальное время получат классные призы от «МойОфис».
A gopher odyssey ждёт тебя: https://tprg.ru/6so1
Реклама
Да, ты не ослышался. Вместе с «МойОфис» сделали игру, в которой нужно спасти марсианских колонизаторов от песчаной бури. И сделать это могут только гоферы.
Реши задачи по Go и помоги героям! Первые 10 игроков с максимальным результатом за минимальное время получат классные призы от «МойОфис».
A gopher odyssey ждёт тебя: https://tprg.ru/6so1
Реклама
👍1🤮1
🪤 Что выведет код?
Anonymous Quiz
43%
ZeroDivisionError: division by zero
12%
division by zero
33%
ZeroDivisionError
13%
saveit is not defined
👍3👎3
«...после выхода из блока except эта переменная [X] удаляется. Так происходит оттого, что в противном случае она сохранила бы ссылку на стек вызовов времени выполнения, которая отложила бы сборку мусора, оставив выделенным избыточное пространство памяти. Однако удаление переменной происходит, даже если вы используете имя где-то в другом месте, и является более крайней политикой, чем применяемая для включений.»
«Вы обычно должны использовать в конструкциях except оператора try уникальные имена переменных, хотя они и локализуются внутри областей видимости. Если вам необходимо ссылаться на экземпляр исключения после оператора try, тогда просто присвойте его еще одному имени (saveit), которое не будет автоматически удаляться»:
try:
1/0
except Exception as X: # Python удаляет эту ссылку
saveit = X # Присвоить экземпляр исключения для его сохранения
print(saveit) # division by zero
❤1👍1👎1
🪤 Что выведет код?
Anonymous Quiz
20%
x должно быть меньше y
15%
Условие выполнено
61%
AssertionError: x должно быть меньше y
3%
Пустой ответ
«Оператор assert — простой способ вставить отладочные утверждения в программу». Он является простым утверждением, которое проверяет истинность выражения.
Когда условие в assert истинно, программа продолжает выполнение без каких-либо изменений.
Если же условие ложно, assert вызывает исключение AssertionError, что приводит к немедленному завершению программы.
assert может принимать необязательное сообщение об ошибке, которое будет выведено при срабатывании исключения.
В нашем случае assert x < y, "x должно быть меньше y" проверяет, что переменная x действительно меньше y.
Поскольку 15 < 10 является ложным утверждением, assert вызывает исключение и останавливает дальнейшую интерпретацию кода.
x = 15
y = 10
assert x < y, "x должно быть меньше y" # AssertionError: x должно быть меньше y
print("Условие выполнено") # Не отработает вообще
Важно понимать, что `assert` предназначен для отладки и проверки инвариантов программы, а не для обработки ошибок времени выполнения.
❤1👍1
Хотите выйти за рамки базового Python и перейти к профессиональной разработке?
Пора сделать следующий шаг - онлайн-курс «Python Developer. Professional».
Старт обучения - 29 сентября.
Это программа для тех, кто уже уверенно работает с Python и готов углубляться в промышленную разработку, лучшие практики и архитектуру современных приложений.
Вы научитесь:
— Писать надёжный, быстрый и безопасный код
— Проектировать архитектуру приложений и профилировать производительность
— Работать с современными фреймворками и библиотеками
— Понимать устройство чужого и собственного ПО, обеспечивать его поддержку и развитие
— Применять Python в реальных задачах - от backend-а до data-driven решений
Этот курс — шаг в настоящую инженерию на Python. По итогам вы не просто прокачаете скиллы, а сможете уверенно работать на middle+ / senior-уровне.
Успейте записаться до старта 29 сентября!
Пройдите вступительное тестирование и займите место в группе
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Пора сделать следующий шаг - онлайн-курс «Python Developer. Professional».
Старт обучения - 29 сентября.
Это программа для тех, кто уже уверенно работает с Python и готов углубляться в промышленную разработку, лучшие практики и архитектуру современных приложений.
Вы научитесь:
— Писать надёжный, быстрый и безопасный код
— Проектировать архитектуру приложений и профилировать производительность
— Работать с современными фреймворками и библиотеками
— Понимать устройство чужого и собственного ПО, обеспечивать его поддержку и развитие
— Применять Python в реальных задачах - от backend-а до data-driven решений
Этот курс — шаг в настоящую инженерию на Python. По итогам вы не просто прокачаете скиллы, а сможете уверенно работать на middle+ / senior-уровне.
Успейте записаться до старта 29 сентября!
Пройдите вступительное тестирование и займите место в группе
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
❤2
Какие типы задач вы решаете?
Anonymous Poll
37%
Как на LeetCode («Напишите функцию…»)
35%
Как здесь: вопросы с вариантами ответов
46%
Сейчас не решаю
6%
Другое
В данном коде присутствуют два активных оператора try — один в функции action1 и один на верхнем уровне модуля.
Функция action2() генерирует исключение TypeError при попытке сложить число 1 и пустой список [], поскольку складывать числа и последовательности нельзя.
«Когда action2 сгенерирует исключение `TypeError`, интерпретатор Python выберет и выполнит самый недавний try с совпадающей конструкцией except, которым в данном случае будет `try` внутри функции action1()».
Поэтому исключение `TypeError` будет перехвачено внутренним обработчиком except TypeError: print('inner try'), и на экран выведется 'inner try'.
Внешний `try` блок не выполнится, так как исключение уже было обработано на более глубоком уровне вложенности.