Всё об исключениях и работе с ними в Python

  Рет қаралды 48,963

Диджитализируй!

Диджитализируй!

Күн бұрын

Мой курс «Хардкорная веб-разработка» - course.to.digital
Книжный клуб Ботаним!, где мы читаем хорошие ИТ-книги: botanim.to.digital/
Telegram: t0digital.t.me
Сказать спасибо за это видео можно здесь - boosty.to/digitalize.team
Поговорим о том, что такое исключения, как они работают в Python, какие бывают, как их обрабатывать - полный гайд по Exceptions в Python.
0:00 О чём пойдёт речь, о серии видео
0:58 Что такое исключения и зачем они?
3:10 Системные исключения, пример
6:00 Обработка нескольких исключений
7:01 Базовый класс Exception
8:19 Обзор разных типов исключений
16:06 Свои типы исключений
21:03 Обрабатывать базовый Exception или конкретный тип?
23:32 Пример
25:32 Прокидывание исключения наверх
26:42 Исключения - дорогие
29:04 Языки программирования без исключений
Обработка исключений в Django - • Обработка и отслеживан...
/****************** about ******************/
Меня зовут Алексей Голобурдин, я программирую с 2004 года и на этом канале делюсь своим опытом. Я основатель и руководитель компаний:
- Диджитализируй digitalize.team, разрабатываем сложные IT системы для бизнеса;
- Salesbeat salesbeat.pro, комплексный модуль доставки для интернет магазинов.
Если у вас есть проект на разработку, пишите нам на hi@digitalize.team.
С другими предложениями, а также если вам нужна одна или несколько индивидуальных консультаций/уроков по разработке (3000 руб/час), пишите мне на alexey@salesbeat.pro.
Telegram канал - t.me/t0digital
ВК - digitalize.team
RuTube - rutube.ru/channel/24802975/ab...
Дзен - dzen.ru/id/6235d32cb64df01e6e...

Пікірлер: 228
@SergMirny_yt
@SergMirny_yt 3 жыл бұрын
И за микрофон отдельный респект. В отличии от многих видео, которые записываются в дешманскую гарнитуру, Ваши смотреть, одно удовольствие. Это я Вам как звукорежиссёр в прошлом (15 лет стажа) говорю ))
@t0digital
@t0digital 3 жыл бұрын
О, спасибо! Приятно получать такую обратную связь от специалиста!
@_mrmark
@_mrmark Жыл бұрын
А мне мелодия сильно мешает слушать.
@mrZZYbeR
@mrZZYbeR 18 күн бұрын
Блииин - вот за "останов" процесса - отдельный респект!
@lil_peepka
@lil_peepka 3 жыл бұрын
Воу неужели реально видео каждый день
@user-rs5zq9hy4m
@user-rs5zq9hy4m 3 жыл бұрын
Суперполезно, спасибо!! Молодчина, каждый день видео, вот это работа!)
@TarTarus
@TarTarus 3 жыл бұрын
Курс по django и его Rest Api, будет просто топ от тебя!
@user-dq6ue2gw7x
@user-dq6ue2gw7x 2 жыл бұрын
Огромное тебе спасибо за твою работу!!!!! Один из лучших каналов по Python!!!🤬👍
@user-nb3cv9bq9r
@user-nb3cv9bq9r 2 жыл бұрын
великолепный видос, дай бог здоровья таким учителям с безукоризненным детализированием уроков
@t0digital
@t0digital 2 жыл бұрын
Спасибо! Рад, что полезно
@nabi_koban
@nabi_koban 3 жыл бұрын
Я восхищаюсь качеством видео на канале! Спасибо!
@t0digital
@t0digital 3 жыл бұрын
Спасибо! Рад, что нравится!
@solya0x
@solya0x Жыл бұрын
Спасибо за урок, очень приятная подача под ambient, даже слегка расслабился и насладился новой информацией.
@user-jt5mc2kr4m
@user-jt5mc2kr4m 2 жыл бұрын
Здорово! Спасибо за всегда интересный и полезный контент!
@kubenet
@kubenet 3 жыл бұрын
Круто получилось) Очень подробно и всесторонне представлена тема обработки исключений в Python. Буду использовать.
@arkadyaeternit9793
@arkadyaeternit9793 3 жыл бұрын
Просто и понятно. Спасибо за очередной полезный ролик.
@hackdivision
@hackdivision 3 жыл бұрын
Держи 1000-й лайк, друг! Спасибо за твои видео!
@wcodes-kk2pr
@wcodes-kk2pr 3 жыл бұрын
Грузовик лайков разгружать куда, командир?
@t0digital
@t0digital 3 жыл бұрын
Было бы круто разгрузить здесь!
@artydevco
@artydevco 3 жыл бұрын
Алексей, большое спасибо за ваш труд :)
@german__kr
@german__kr 3 жыл бұрын
Ждал видос по этой теме! Крутой контент)
@t0digital
@t0digital 3 жыл бұрын
Юхууу! Спасибооо!
@m0rtym0rty7
@m0rtym0rty7 3 жыл бұрын
Как же много годного контента, продолжай!
@t0digital
@t0digital 3 жыл бұрын
Спасибо!
@nik-ix2md
@nik-ix2md 3 жыл бұрын
блин, насколько же крутой канал. Супер полезная инфа, в какой-то момент я прям почуствовал, как мне в мозг наконец-то пришло осознание
@t0digital
@t0digital 3 жыл бұрын
Спасибо! 🙏
@innocence3158
@innocence3158 3 жыл бұрын
спасибо за контент))
@t0digital
@t0digital 3 жыл бұрын
Рад, что полезно!
@serhiyprots8586
@serhiyprots8586 3 жыл бұрын
Спасибо огромное за видео, как всегда очень интересно!) Было бы очень интересно послушать про авторизацию, аутентификацию на примере джанго, какие преймущества разных способов (JWT, Session Authentication и тд)
@yurlova
@yurlova 3 жыл бұрын
Спасибо! Как раз изучаю эту тему сейчас. Актуально👍
@flont1204
@flont1204 3 жыл бұрын
давно хотел разобраться в исключениях в python и за пол часа все как то яснее стало, спасибо!
@t0digital
@t0digital 3 жыл бұрын
Отлично, рад, что полезно!
@adilrashitov2877
@adilrashitov2877 3 жыл бұрын
Спасибо! то что нужно) Было бы интересно про пайтон в сторону функционального программирования
@andronwens2680
@andronwens2680 3 жыл бұрын
Функциональщина в Питоне отстой (имхо)
@t0digital
@t0digital 3 жыл бұрын
о, расскажу!
@bogdanvolodko1119
@bogdanvolodko1119 3 жыл бұрын
andron wens функциональщина в принципе отстой
@daniilpopkov4176
@daniilpopkov4176 3 жыл бұрын
Большое, Вам, спасибо! :)
@Developer_python_
@Developer_python_ Жыл бұрын
Спасибо,все знал. Кроме длительности обрабатывания исключений. Лайк)
@user-lz3ez3nn4j
@user-lz3ez3nn4j 3 жыл бұрын
Молодчина, большое спасибо за видео
@t3m8ch79
@t3m8ch79 3 жыл бұрын
Спасибо за ролик!
@current1710
@current1710 3 жыл бұрын
Интересные пол часа, спасибо!
@t0digital
@t0digital 3 жыл бұрын
Спасибо!
@Uncle_dijkstra
@Uncle_dijkstra 3 жыл бұрын
Спасибо. Было бы интересно услышать, что происходит под капотом в питоне, когда бросается исключение
@t0digital
@t0digital 3 жыл бұрын
Хорошая идея для видео, спасибо
@user-kx7oi9if6j
@user-kx7oi9if6j 3 жыл бұрын
Большое спасибо за такие подробные и наглядные разъяснения!
@t0digital
@t0digital 3 жыл бұрын
Рад, что полезно!
@user-kx7oi9if6j
@user-kx7oi9if6j 3 жыл бұрын
@@t0digital 90% информации ищу и смотрю сразу на английском, но русскоязычные ютьюберы как-то гораздо лучше объясняют всякое техническое/IT. Очень приятно на самом деле находить такой качественный контент именно на русском! Да будет шириться наше славное python-сообщество!
@t0digital
@t0digital 3 жыл бұрын
Йееее! Рад быть частью этого:)
@TheFomars
@TheFomars 3 жыл бұрын
"AssertionError - забавная штука, не очень часто ее используют..." - кто-то спалился, что не пишет тесты)
@mmospanenko
@mmospanenko 3 жыл бұрын
а зачем тебе в тестах обрабатывать исключение?) тут уже наверное проблема в архитектуре раз тест может быть упавшим, но ... "неочень" :)
@uszr1
@uszr1 3 жыл бұрын
Праздник каждый день!=) так держать)
@user-fd3nw3un7v
@user-fd3nw3un7v 3 жыл бұрын
ахах, под такую музыку надо томным голосом говорить... "твой код самый лучший"... "у тебя не бывает не обработанных исключений".... "у тебя всегда всё компилится с первого раза"... "чак норис восхищается твоим кодом".... ЗЫ спасибо за ролик))
@bpospanov
@bpospanov 3 жыл бұрын
27:10 Так, только что посмотрел видео про EAFP и там говорилось, что лучше трай-ексепт делать, чем ифы. А тут наоборот
@IlyaLeontyev
@IlyaLeontyev Жыл бұрын
12:08 def some_func(a=None, b=None): assert a or b Не сказал бы, что "эта конструкция проверит, что заданы либо a, либо b". Если я вызову, например, some_func(0, ""), то я задам значения для обоих параметров и при этом все равно получу Exception.
@govdamikhaylo4183
@govdamikhaylo4183 3 жыл бұрын
Очень полезный видос:)
@konstantinrozhkov7613
@konstantinrozhkov7613 3 жыл бұрын
Как всегда концентрированная полезная инфа)
@evkny
@evkny 2 жыл бұрын
Слишком полезно, чтобы быть. Спасибо за багаж знаний. Лайк репост и благодарность
@innocence3158
@innocence3158 3 жыл бұрын
Просьба записать видео о лайфхаках и всяких полезных штуках и хороших практиках в питоне (как делать что-то правильно). Например, использовать не конкатенацию строк а f-strings, и т.д)
@user-dn4lk4ur2w
@user-dn4lk4ur2w 3 жыл бұрын
Удивительно в кон,ваше видео. Желаю успехов!
@t0digital
@t0digital 3 жыл бұрын
Спасибо 🙏
@kalik54
@kalik54 3 жыл бұрын
Я еще не смотрел но наконец дождался))
@t0digital
@t0digital 3 жыл бұрын
Ура-ура!
@izzzanaaami
@izzzanaaami 2 жыл бұрын
Качество на высоте, и музыка затягивает на просмотр, как гипноз
@andrewlobanov8859
@andrewlobanov8859 3 жыл бұрын
Как всегда отличное видео, проясняющее не очень ясные моменты. Лутц достаточно туманно на мой взгляд высказался в плане рекомендаций по использованию исключений. Спасибо, что разложил по полочкам.
@graf3031
@graf3031 2 жыл бұрын
Благодарю, отличный урок. Сейчас допиливать своё приложение буду, а то падает от каких- то внешних факторов.
@MrVolodichev
@MrVolodichev 3 жыл бұрын
Спасибо!
@beketov2126
@beketov2126 3 жыл бұрын
tnx boss!
@user-zq7kg9ce4t
@user-zq7kg9ce4t 3 жыл бұрын
Ну ты фигачишь как автомат. Каждый день новое видео - очень круто ᕙ( ͡° ͜ʖ ͡°)ᕗ
@Uni-Coder
@Uni-Coder 3 жыл бұрын
"Исключения дорогие". Да, для обработки исключений создается отдельный стек либо специальные элементы стекфрейма. Исключения дают рантайм-оверхед, даже если ни одного исключения в вашей программе не произойдет, поскольку эти самые элементы стекфрейма нужно создать, а потом освободить. Это одна из причин, почему системный код даже сейчас пишется на C, или в крайнем случае на C++ с отключенными исключениями. "Языки программирования без исключений". В первую очередь это, конечно, C. Также могу добавить Rust, прилично в нем работал, там своеобразный подход к обработке исключительных ситуаций, и можно обойтись без кучи if-ов для их обработки. Обычно пишешь "something.unwrap()" (самый ленивый вариант), "something.expect("ЧётоНеТо")" или просто "something?" (вопросительный знак прокидывает исключение вверх по стеку вызовов, лишь бы возвращаемый тип соответствовал).
@lleballex3248
@lleballex3248 3 жыл бұрын
Просто лучший! Очень полезная информация. Тебе бы стримас провести вместе с Мурренганом, вообще топ будет!
@t0digital
@t0digital 3 жыл бұрын
Спасибо!
@rbalabekyan1286
@rbalabekyan1286 3 жыл бұрын
Спасибо. Можно ещё об api testing (pytest) рассказать?
@MEZHGANO
@MEZHGANO Жыл бұрын
Спасибо за видео) Кстати, в будущих версия Питона вроде как обещают что исключения не будут оказывать столь существенного влияния на скорость
@user-oi1zl6de8i
@user-oi1zl6de8i 3 жыл бұрын
*Спасибо*
@t0digital
@t0digital 3 жыл бұрын
🙏
@MichaelKondrashin
@MichaelKondrashin 3 жыл бұрын
ImportError - отличная штука для нестандартных модулей (можно после except выдать диагностику, что нужно сделать, чтобы модуль появился) и для создания кода, совместимого с Python 2.
@namalnikmisartenko8785
@namalnikmisartenko8785 3 жыл бұрын
Прикольно. Лайк)
@t0digital
@t0digital 3 жыл бұрын
Спасиб!
@namalnikmisartenko8785
@namalnikmisartenko8785 3 жыл бұрын
@@t0digital Кстати можешь осветить тему паттернов проектирования)) Я думаю вы часто проектируете всякие штуки и часто применяете на практике)
@MrBuzzyBumble
@MrBuzzyBumble 3 жыл бұрын
Спасибо за контент! Просьба - делать фоновую музыку потише, иногда она выходит на громкость почти равную голосу и это отвлекает от сути.
@andreymishuk2188
@andreymishuk2188 3 жыл бұрын
что лучше использовать и что быстрее сработает и что будет наглядней, декоратор проверки или все же try catch
@doskuloff
@doskuloff 3 жыл бұрын
Алексей, добрый день, в первую очередь хотел бы выразить Вам огромное спасибо за ваш труд. Ваш контент просто супер. Как будет у вас свободное время, можете запилить REST API на DRF? Я думаю многим было бы это очень интересно. Еще раз спасибо!
@t0digital
@t0digital 3 жыл бұрын
Спасибо! По DRF материал планируется, да
@limonred5283
@limonred5283 3 жыл бұрын
@@t0digital кстати да, сейчас почти в каждой вакансии DRF, даже на джуна
@doskuloff
@doskuloff 3 жыл бұрын
Диджитализируй! Спасибо большое! Буду ждать с нетерпением!
@nucluster
@nucluster 3 жыл бұрын
Алексей, спасибо что чаще стали баловать нас подписчиков новыми видео. Фоновая музыка, мне кажется, только лишняя.
@t0digital
@t0digital 3 жыл бұрын
Да, похоже, что лучше без музыки
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 2 жыл бұрын
24:33 отлов всех неотловленных ислючений
@user-gg4ng4kl3e
@user-gg4ng4kl3e 3 жыл бұрын
Алексей, а можно что-нибудь про юниттесты еще? Однозначно лайк! :)
@t0digital
@t0digital 3 жыл бұрын
Да, планирую материал
@eugeneburdin704
@eugeneburdin704 3 жыл бұрын
Как же "Better is ask forgiveness, than permission"?))) (По поводу try-except vs if-else). Интересный кейс по поводу скорости обработки и затрат ресурсов. Есть доказательства? хотелось бы проверить) Спасибо за контент, зашёл отлично )
@mephistos_the_one
@mephistos_the_one 4 ай бұрын
Здравствуйте. Начал изучать python, и не совсем понимаю: когда именно нужно пользоваться исключениями, если практически все можно проверить конструкцией "if-else"? Можно ли совсем обойтись без обработки исключений?
@zenbool7658
@zenbool7658 Жыл бұрын
Фоновая музыка - это ужасно. Благодарю за уроки, качественно и полезно!
@SoulPervert
@SoulPervert 3 жыл бұрын
большое спасибо за видео, ждем следующих выпусков с нетерпением! также хотелось бы больше узнать про тестирование в Django, буду очень благодарен за освещение этой обширной темы в будущем)
@t0digital
@t0digital 3 жыл бұрын
Спасибо! Возможно сделаем материал
@bytheway7
@bytheway7 Жыл бұрын
Спасибо! А какие возникают накладные расходы при использовании исключений? Если обработка их реализована в коде, но они не срабатывают (то есть, код правильный, работает правильно), то влечёт ли это замедление исполнения? Дополнительное использование памяти? Насколько и когда стоит обращать на это внимание (если есть накладные расходы)?
@ntvisigoth
@ntvisigoth 2 жыл бұрын
@Диджитализируй! Спасибо за труд. Есть такая ситуация. В одном куске кода несколько вызовов разных функций : foo1(), foo2(), .... fooN() . Каждый из которых может бросить исключение: FooError1, FooError2, FooErrorN. Верно ли понимаю, что лучше написать отдельные функции, которые вызывают эти функции, обрабатывают эти исключения, а уж эти отдельные функции без обработки исключений можно вызвать в основной "собирающей" функции? {code} def foo1_safe(): try: foo1() except FooError1: pass def foo2_safe(): try: foo2() except FooError2: pass def fooN_safe(): try: fooN() except FooErrorN: pass def foo(): foo1_safe() foo2_safe() .... fooN_safe() {code} Именно так по python way ?
@viktor_borodin
@viktor_borodin Жыл бұрын
Здравствуйте. Что думаете по поводу создания декораторов для обработки исключений?
@t0digital
@t0digital Жыл бұрын
Да, в каких-то сценариях можно и так
@fahrenheit1863
@fahrenheit1863 10 ай бұрын
23:32 Столкнулся с проблемой при обработке исключений, на уровне функции класса перехватить исключение получается, но на уровне функции main нет, сообщения отправляются в консоль и программа продолжает работать, например исключение ConnectionError модуля requests.
@bpospanov
@bpospanov 3 жыл бұрын
лучший айти блог
@t0digital
@t0digital 3 жыл бұрын
Спасибо:) Стараемся!
@Johniooooo
@Johniooooo 3 жыл бұрын
Хорошие видео у вас. Вы похожи на доброго кота из мультфильма, это специально подобранный образ?)
@t0digital
@t0digital 3 жыл бұрын
Хахах, спасибо! Даже не знаю:)
@MrDimka12101
@MrDimka12101 3 жыл бұрын
В моём понимании. Всё то, что нельзя обнаружиться сразу, надо ловить, когда будет падать. Т.е., например, при запросе на сервер можно структуру body неплохо так прошерстить по трафарету, а не пускать дальше и ждать, упадёт не упадёт. Но бывают ситуации, где на берегу сразу не разберёшься.
@MrDimka12101
@MrDimka12101 3 жыл бұрын
Но также, наверное, следует выдерживать баланс, беря во внимание подход "Easier to ask for forgiveness than permission"
@lucius9599
@lucius9599 3 жыл бұрын
Здравствуйте Алекскей! К сожаленю я не мог попасть на стримы, но у меня к вам есть вопрос касательно немного другой темы. Когда я использую typehintings, как мне указать, что в качестве переменной должна быть функция или или класс. В документации нашел только object. Значит ли это то, что для решения моей проблемы надо указывать object? Заранее спасибо
@t0digital
@t0digital 3 жыл бұрын
Привет! from typing import Callable - это тип для функции, для класса тип type. То есть хинт для функции some_func: Callable, для класса (если это прям любой-любой класс) - some_class: type.
@lucius9599
@lucius9599 3 жыл бұрын
@@t0digital Большое спасибо
@vdarasun
@vdarasun 11 ай бұрын
Самый интерес-то и не рассказан - нелинейность и освобождение ресурсов, проблемы получения неконсистентности. Очень бы хотелось услышать от Вас на конкретных "сложных" примерах.
@vladislavgrin7122
@vladislavgrin7122 2 жыл бұрын
7:01 KeyboardInterrupt наследуется от BaseException, соответственно, как сказано в видео, одним Exception'ом всё не отловить. Ссылка на документацию: docs.python.org/3/library/exceptions.html#KeyboardInterrupt И немного демонстрации: >>> BaseException.__bases__ (,) >>> Exception.__bases__ (,) >>> BaseException.__subclasses__() [, , , ]
@ExTaaaaaZ1
@ExTaaaaaZ1 3 жыл бұрын
Алексей, что за продуктивность?))
@t0digital
@t0digital 3 жыл бұрын
Нашёл трёхлитровую банку с кокаином! *шутка
@romarioyeah
@romarioyeah 3 жыл бұрын
Диджитализируй! Задонатили что ли? 😂
@t0digital
@t0digital 3 жыл бұрын
@@romarioyeah только тссс!
@romarioyeah
@romarioyeah 3 жыл бұрын
Диджитализируй! Могила 🤐
@eugeneb638
@eugeneb638 3 жыл бұрын
Спасибо за видео !!!
@MS-fu3zf
@MS-fu3zf 3 жыл бұрын
Просьба записать видео о том, как быстро разбираться в коде уже существующего проекта. Вот посадили новичка на проект, а там куча файлов и папок, множество встроенных друг в друга функций и так далее. Как распутывать этот клубок? С чего начинать изучение чужого кода? Возможно, есть какие-то приемы картирования кода проекта? Хотелось бы такой контент.
@t0digital
@t0digital 3 жыл бұрын
Этот вопрос решает документация к проекту. Не многотомная устаревшая фигня, а несколько страничек с описанием структуры проекта, архитектуры и решаемых задач. По нему человек уже может вникнуть быстрее, что к чему. Ну и живое общение никто не отменял, после ознакомления с кодом и документацией можно пообщаться с новичком, ответить на вопросы и тд, живое общение очень полезно.
@C0oo1D
@C0oo1D 3 жыл бұрын
А как же pep8 (суффикс Error у эксепшена под ошибку)? ;)
@user-mc4sy5gx4n
@user-mc4sy5gx4n 3 жыл бұрын
Читал где-то, что по правилам нейминга лучше к названию кастомного исключения в конце приписывать Error, а не Exception
@Nachmed
@Nachmed 3 жыл бұрын
шЫкарно! Больше питонячего кода!
@mmospanenko
@mmospanenko 3 жыл бұрын
блин музыка на фоне под которую я работаю, получается мозг думает что работать нужно даже при просмотре отдыхающего видео))
@yakoro4ka112
@yakoro4ka112 3 жыл бұрын
а видосики по go не планируются? было бы круто если закодить в реалтайме что-то не сложное.
@t0digital
@t0digital 3 жыл бұрын
Планируются обязательно. Планов огромное количество. Время найти бы.
@yakoro4ka112
@yakoro4ka112 3 жыл бұрын
@@t0digital Я все хочу немного погрузиться в него, но как-то руки тоже не доходят. Будем ждать!
@alexanderserzhan
@alexanderserzhan 2 жыл бұрын
На 2:15 минуте подвинулась кружка)
@NickVoid
@NickVoid 3 жыл бұрын
Привет. Спасибо за видео. Оффтопик - зачем Вы каждый раз выходите из vim что бы запустить приложение? :) :!python % либо добавить hotkey :nmap :!python %
@t0digital
@t0digital 3 жыл бұрын
привычка:)
@caesar5122
@caesar5122 3 жыл бұрын
Программа: сорри, блабла.... Юзер: ну да, ну да, пошел я на...
@AlexGott
@AlexGott 3 жыл бұрын
Я конечно вдамся в изотерику контентмейкерства, но мне кажется темп музыки должен коррелировать с голосом. За видос спасибо, всё было очень понятно и как всегда полезно. #лайкпередпросмотром
@t0digital
@t0digital 3 жыл бұрын
да, я еще совсем не постиг дзен подбора звукового сопровождения
@kriskaruzo1398
@kriskaruzo1398 3 жыл бұрын
24:03 как вы f1() и f2() перместили ровно на один таб, я сам пользуюсь вимом, но не знаю про эту фичу
@t0digital
@t0digital 3 жыл бұрын
> или >> в зависимости от того, выделены ли сдвигаемые строки
@kriskaruzo1398
@kriskaruzo1398 3 жыл бұрын
@@t0digital работает! спасибо)
@t0digital
@t0digital 3 жыл бұрын
@@kriskaruzo1398 отлично :) с вимом можно постоянно находить новые фишки
@Johniooooo
@Johniooooo 3 жыл бұрын
кстати, еще на стриме писали , что NotImplementedError сработает только когда этот метод у инстанса вызовут. А abc.ABC не даст создать экземпляр класса, наверное это все-таки поудобнее
@t0digital
@t0digital 3 жыл бұрын
Да, это не полный аналог abc
@MXMPWASHERE
@MXMPWASHERE 3 жыл бұрын
Спасибо за видео. Как всегда все круто. Но вот утверждение, что exception более ресурсоемко чем if..else заставило меня задуматься. Я не один раз и не от одного человека слышал, что в Python исключения ничего не стоят и дешевле кинуть исключение, чем делать if...else. Что-то сильно изменилось в этом плане со времён Python2? Или меня изначально ввели в заблуждение. Хотелось бы подробностей. С заменой исключений на if...else правильно замечено, что если всё-таки не удалось завершить операцию, то исключение нужно кинуть. А то были прецеденты когда проект становился похожим на PHP 😅
@t0digital
@t0digital 3 жыл бұрын
Вот что об этом пишут на офсайте docs.python.org/3/faq/design.html#how-fast-are-exceptions
@ripichipina
@ripichipina 3 жыл бұрын
@@t0digital На мой взгляд в видео получилось немного неоднозначно про if-else vs. try-catch. Нельзя забывать про подход "Easier to ask for forgiveness than permission". Вот тут есть отличный ответ на эту тему: stackoverflow.com/a/7604717 Он дополняет пример из ссылки, которую вы привели.
@dmytrokorbanytskyi1586
@dmytrokorbanytskyi1586 3 жыл бұрын
изначально во главу угла ставится читабельность и поддержка кода. Есть случаи, когда try..except намного выразительнее, чем if..else. Лучше сэкономить десятки минут на разбор кода, чем микросекунду на его исполнение. Так что сильно заморачиваться по этому поводу не стоит.
@user-ek6jh1le4q
@user-ek6jh1le4q 3 жыл бұрын
Спасибо за видео. Музыка заднего фона какая-то пульсирующая и иногда звучит достаточно громко и отвлекает. Не могу сказать, что в тишине лучше - дело вкуса, но если можно сделать уровень фона тише - будет здорово ))
@t0digital
@t0digital 3 жыл бұрын
Спасибо! Приму к сведению!
@Noable
@Noable 3 жыл бұрын
Офигенная фоновая музыка. Помедетировал. Спасибо😁
@t0digital
@t0digital 3 жыл бұрын
Отлично :) хотя понравилось не всем
@icyberta
@icyberta 3 жыл бұрын
как ловить плюсовые исключения в pyQT? которые вываливаются с ошибкой x00000012232c и черт ногу сломит на какой строке в каком файле случилась ошибка)
@t0digital
@t0digital 3 жыл бұрын
Ни разу не сталкивался, признаюсь:)
@scadeline805
@scadeline805 3 жыл бұрын
Классное видео! Но если честно не понимаю зачем вообще нужно использовать Exceptions, в каких ситуациях, если можно написать if else. Объясните пожалуйста
@n3tium
@n3tium Жыл бұрын
Для отладки применять. А потом уже более детально писать код.
@SergMirny_yt
@SergMirny_yt 3 жыл бұрын
Я на всех сетевых запросах в десктоп приложениях вешаю try, except, на случай, если нет инета или любое другое исключение, которое может возникнуть из-за чего-то, что не относится к данной системе (навернулся удаленный сервер, оборвалась сеть и т.п.) Правильно ли так делать?
@t0digital
@t0digital 3 жыл бұрын
Это нормально, главное там отлавливать именно сетевые ошибки, а не базовый Exception, чтобы случайно не захватить другие ошибки, не относящиеся к сетевым, и не приписать их к сетевым
@SergMirny_yt
@SergMirny_yt 3 жыл бұрын
@@t0digital да, над этим поработаю. Спасибо Вам за ценные уроки. Сейчас я отлавливаю базовый Exception, но сначала я пишу функционал, его гоняю и тестирую, а потом уже оборачиваю рабочий код в try ну и обрабатываю Exception. Теперь понимаю, что это как тестить принтами))
@eugeneburdin704
@eugeneburdin704 3 жыл бұрын
Как по мне нужно использовать исключения там где они элегантно вписываются и уменьшают затраты по ресурсам. Аля get or create в orm-ке
@govdamikhaylo4183
@govdamikhaylo4183 3 жыл бұрын
Найс :)
@knarg4682
@knarg4682 Ай бұрын
12:00 *assert a or b проверит, что задана хотя бы "а" или хотя бы "b"...* Не проверит. Это же bool, куда влетит не только None, но и пустая коллекция (в том числе и строка), ноль, незапустившийся диапазон и, собственно, само False. Всё это -- не None и могло бы восприниматься как данные для обработки, мало ли. Тогда уже a is not None or b is not None (или a != None or b != None, хороший повод для холивара). 27:00 *если что-то можно решить при помощи if - else, то исключения не нужны* Вот тут прям респект))) Потому что "простое лучше, чем сложное" и городить пирамиду из классов и 100500 импортов там, где можно этого не делать -- это хорошо и правильно. Тут можно и отсылочку вбросить: _даже если код с кучей классов и импортов выглядит как "чистый")))_
@t0digital
@t0digital Ай бұрын
да, a or b, конечно, не проверяет именно на None
@grehban
@grehban 3 жыл бұрын
10:15 оно так-то и не ловится в try/except, его нельза обработать
@vrabosh
@vrabosh 3 жыл бұрын
Мне пхп в этом плане нравится.. там исключения логируются автоматом и поэтому экзепщином не пользовался.. а где понимал, что будет исключение ифы делал.. И еще что хорошо в пхп было, что там каждый раз скрипт запускается и все приложение из за этого не падает.. И правится это все на лету, просто заменой файла, без перезагрузки проекта. Вот интересно в питоне подобный стиль программирования можно сделать? Если каждый раз от nginx запускать скрипт, это будет дорого по времени? или может еще как нить?
@alexjuly7097
@alexjuly7097 3 жыл бұрын
Могу соврать, но ведь в пхп нет "всего приложения", каждый скрипт запускается интерпретатором отдельно?
@vrabosh
@vrabosh 3 жыл бұрын
@@alexjuly7097 вот как раз, за счет того, что отдельно запускается каждый раз, то можно не парится об исключениях как таковых.. а вылавливать ошибки в логах и править их и тогда получается более чистый код..
@bolatmukashev2830
@bolatmukashev2830 3 жыл бұрын
Pycharm "ругается" когда пишешь try-except. Что там нового в PEP? Простой try-except уже не актуален?
@dmytrokorbanytskyi1586
@dmytrokorbanytskyi1586 3 жыл бұрын
после Except указан тип исключения? Ловить всё - плохая примета.
@t0digital
@t0digital 3 жыл бұрын
Скорее всего просто показывает warning на except: без указания конкретного типа исключения, да, как Дмитрий пишет. Это не ошибка, просто пичарм обращает внимание на то, что возможно стоит указать конкретный тип отлавливаемого исключения
@vrabosh
@vrabosh 3 жыл бұрын
Кстати только, что проверил скорость обработки ифов и try, и получилось, что try выигрывает по скорости если нет ошибок и причем затраты не такие уж и большие, 10ns на проход цикла.. Если писать код так, чтоб редко были ошибки и если есть сразу их исправлять, то получается исключения не такие уж и затратные. %%timeit for i in range(1000): try: a = b*b except: a = 1 50.5 µs ± 949 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each) # b = 1 346 µs ± 3.12 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each) # b = '1' %%timeit for i in range(1000): if type(b) == int: a = b*b else: a = 1 135 µs ± 2.18 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each) # b = 1 110 µs ± 2.8 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each) # b = '1'
@t0digital
@t0digital 3 жыл бұрын
Так и есть, исключения надо использовать там, где они будут вызываться редко docs.python.org/3/faq/design.html#how-fast-are-exceptions
Исправьте СРОЧНО эти 12 ошибок в ваших Python проектах
23:41
Which one is the best? #katebrush #shorts
00:12
Kate Brush
Рет қаралды 19 МЛН
ИРИНА КАЙРАТОВНА - АЙДАХАР (БЕКА) [MV]
02:51
ГОСТ ENTERTAINMENT
Рет қаралды 1 МЛН
Stupid Barry Find Mellstroy in Escape From Prison Challenge
00:29
Garri Creative
Рет қаралды 4,2 МЛН
Алексей Кузьмин. Обработка ошибок в Python
37:05
Видео с мероприятий {speach!
Рет қаралды 4 М.
Логирование в Python и Django
19:58
Диджитализируй!
Рет қаралды 41 М.
Именование переменных, классов и методов в коде
25:40
Django Middleware - что это, зачем и как использовать
14:48
Диджитализируй!
Рет қаралды 46 М.
Which one is the best? #katebrush #shorts
00:12
Kate Brush
Рет қаралды 19 МЛН