Загадка любителям Питона. Основано на реальных событиях. Что напечатается в консоли?
import mod2
class MyException(Exception):
pass
if __name__ == '__main__':
try:
mod2.raise_some()
print('raised some')
except MyException:
print('caught it')
from mod1 import MyException
def raise_some():
raise MyException()
Заранее скажу: Питон 3.11 на этот код не ругается, ему норм.
Напечатается стектрейс. Исключение проскочит минуя except. Хотя, вроде бы, не это планировалось, да?
Почему так.
Программист декларирует один класс исключения, но щедрый Питон делает их два, разных.
Ожидаем __main__.MyException
, прилетает mod1.MyException
.
Неплохое дополнение к другим особенностям работы питона с модулями.
2024.05.11 in python