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

Поделиться
HTML-код
  • Опубликовано: 29 ноя 2024

Комментарии • 227

  • @SergMirny_yt
    @SergMirny_yt 4 года назад +61

    И за микрофон отдельный респект. В отличии от многих видео, которые записываются в дешманскую гарнитуру, Ваши смотреть, одно удовольствие. Это я Вам как звукорежиссёр в прошлом (15 лет стажа) говорю ))

    • @t0digital
      @t0digital  4 года назад +2

      О, спасибо! Приятно получать такую обратную связь от специалиста!

    • @_mrmark
      @_mrmark 2 года назад +1

      А мне мелодия сильно мешает слушать.

  • @лилпипка
    @лилпипка 4 года назад +20

    Воу неужели реально видео каждый день

  • @Мещерскаяаномалия
    @Мещерскаяаномалия 2 года назад +7

    Огромное тебе спасибо за твою работу!!!!! Один из лучших каналов по Python!!!🤬👍

  • @ЕгорТупикин-л6ъ
    @ЕгорТупикин-л6ъ 2 года назад +4

    великолепный видос, дай бог здоровья таким учителям с безукоризненным детализированием уроков

    • @t0digital
      @t0digital  2 года назад +1

      Спасибо! Рад, что полезно

  • @mrZZYbeR
    @mrZZYbeR 6 месяцев назад

    Блииин - вот за "останов" процесса - отдельный респект!

  • @Кантригоспел
    @Кантригоспел 4 года назад +6

    Суперполезно, спасибо!!
    Молодчина, каждый день видео, вот это работа!)

  • @IlyaLeontyev
    @IlyaLeontyev 2 года назад +1

    12:08
    def some_func(a=None, b=None):
    assert a or b
    Не сказал бы, что "эта конструкция проверит, что заданы либо a, либо b".
    Если я вызову, например, some_func(0, ""), то я задам значения для обоих параметров и при этом все равно получу Exception.

  • @TarTarus
    @TarTarus 4 года назад +8

    Курс по django и его Rest Api, будет просто топ от тебя!

  • @innocence3158
    @innocence3158 4 года назад +8

    спасибо за контент))

    • @t0digital
      @t0digital  4 года назад +2

      Рад, что полезно!

  • @arkadyaeternit9793
    @arkadyaeternit9793 4 года назад +1

    Просто и понятно. Спасибо за очередной полезный ролик.

  • @nabi_koban
    @nabi_koban 4 года назад +1

    Я восхищаюсь качеством видео на канале!
    Спасибо!

    • @t0digital
      @t0digital  4 года назад

      Спасибо! Рад, что нравится!

  • @Developer_python_
    @Developer_python_ 2 года назад

    Спасибо,все знал. Кроме длительности обрабатывания исключений. Лайк)

  • @nik-ix2md
    @nik-ix2md 4 года назад +2

    блин, насколько же крутой канал. Супер полезная инфа, в какой-то момент я прям почуствовал, как мне в мозг наконец-то пришло осознание

    • @t0digital
      @t0digital  4 года назад

      Спасибо! 🙏

  • @flont1204
    @flont1204 4 года назад +1

    давно хотел разобраться в исключениях в python и за пол часа все как то яснее стало, спасибо!

    • @t0digital
      @t0digital  4 года назад +1

      Отлично, рад, что полезно!

  • @ДмитрийМакаров-я7м
    @ДмитрийМакаров-я7м 4 года назад +1

    Большое спасибо за такие подробные и наглядные разъяснения!

    • @t0digital
      @t0digital  4 года назад

      Рад, что полезно!

    • @ДмитрийМакаров-я7м
      @ДмитрийМакаров-я7м 4 года назад

      @@t0digital 90% информации ищу и смотрю сразу на английском, но русскоязычные ютьюберы как-то гораздо лучше объясняют всякое техническое/IT. Очень приятно на самом деле находить такой качественный контент именно на русском! Да будет шириться наше славное python-сообщество!

    • @t0digital
      @t0digital  4 года назад

      Йееее! Рад быть частью этого:)

  • @solya0x
    @solya0x Год назад +1

    Спасибо за урок, очень приятная подача под ambient, даже слегка расслабился и насладился новой информацией.

  • @adilrashitov2877
    @adilrashitov2877 4 года назад +17

    Спасибо! то что нужно) Было бы интересно про пайтон в сторону функционального программирования

    • @andronwens2680
      @andronwens2680 4 года назад +1

      Функциональщина в Питоне отстой (имхо)

    • @t0digital
      @t0digital  4 года назад +10

      о, расскажу!

    • @bogdanvolodko1119
      @bogdanvolodko1119 4 года назад

      andron wens функциональщина в принципе отстой

  • @m0rtym0rty7
    @m0rtym0rty7 4 года назад +4

    Как же много годного контента, продолжай!

  • @Прилуки_Класичні
    @Прилуки_Класичні 3 года назад +1

    Держи 1000-й лайк, друг! Спасибо за твои видео!

  • @izzzanaaami
    @izzzanaaami 2 года назад

    Качество на высоте, и музыка затягивает на просмотр, как гипноз

  • @Uncle_dijkstra
    @Uncle_dijkstra 4 года назад +5

    Спасибо. Было бы интересно услышать, что происходит под капотом в питоне, когда бросается исключение

    • @t0digital
      @t0digital  4 года назад +2

      Хорошая идея для видео, спасибо

  • @ВіталійГлапшун
    @ВіталійГлапшун 2 года назад

    Здорово! Спасибо за всегда интересный и полезный контент!

  • @serhiyprots8586
    @serhiyprots8586 4 года назад +7

    Спасибо огромное за видео, как всегда очень интересно!) Было бы очень интересно послушать про авторизацию, аутентификацию на примере джанго, какие преймущества разных способов (JWT, Session Authentication и тд)

  • @bpospanov
    @bpospanov 4 года назад +4

    27:10 Так, только что посмотрел видео про EAFP и там говорилось, что лучше трай-ексепт делать, чем ифы. А тут наоборот

  • @kubenet
    @kubenet 4 года назад

    Круто получилось) Очень подробно и всесторонне представлена тема обработки исключений в Python. Буду использовать.

  • @artydevco
    @artydevco 4 года назад

    Алексей, большое спасибо за ваш труд :)

  • @yurlova
    @yurlova 4 года назад

    Спасибо! Как раз изучаю эту тему сейчас. Актуально👍

  • @german__kr
    @german__kr 4 года назад +1

    Ждал видос по этой теме! Крутой контент)

    • @t0digital
      @t0digital  4 года назад

      Юхууу! Спасибооо!

  • @current1710
    @current1710 4 года назад +1

    Интересные пол часа, спасибо!

  • @АнтонинаСмет
    @АнтонинаСмет 4 года назад

    Молодчина, большое спасибо за видео

  • @t3m8ch79
    @t3m8ch79 4 года назад

    Спасибо за ролик!

  • @Георгий-т8г
    @Георгий-т8г 4 года назад

    Удивительно в кон,ваше видео. Желаю успехов!

  • @innocence3158
    @innocence3158 4 года назад +11

    Просьба записать видео о лайфхаках и всяких полезных штуках и хороших практиках в питоне (как делать что-то правильно). Например, использовать не конкатенацию строк а f-strings, и т.д)

  • @graf3031
    @graf3031 2 года назад +1

    Благодарю, отличный урок. Сейчас допиливать своё приложение буду, а то падает от каких- то внешних факторов.

  • @daniilpopkov4176
    @daniilpopkov4176 4 года назад

    Большое, Вам, спасибо! :)

  • @kalik54
    @kalik54 4 года назад

    Я еще не смотрел но наконец дождался))

  • @vladislavgrin7122
    @vladislavgrin7122 2 года назад

    7:01
    KeyboardInterrupt наследуется от BaseException, соответственно, как сказано в видео, одним Exception'ом всё не отловить.
    Ссылка на документацию:
    docs.python.org/3/library/exceptions.html#KeyboardInterrupt
    И немного демонстрации:
    >>> BaseException.__bases__
    (,)
    >>> Exception.__bases__
    (,)
    >>> BaseException.__subclasses__()
    [, , , ]

  • @fahrenheit1863
    @fahrenheit1863 Год назад

    23:32 Столкнулся с проблемой при обработке исключений, на уровне функции класса перехватить исключение получается, но на уровне функции main нет, сообщения отправляются в консоль и программа продолжает работать, например исключение ConnectionError модуля requests.

  • @doskuloff
    @doskuloff 4 года назад +3

    Алексей, добрый день, в первую очередь хотел бы выразить Вам огромное спасибо за ваш труд. Ваш контент просто супер. Как будет у вас свободное время, можете запилить REST API на DRF? Я думаю многим было бы это очень интересно. Еще раз спасибо!

    • @t0digital
      @t0digital  4 года назад +1

      Спасибо! По DRF материал планируется, да

    • @limonred5283
      @limonred5283 4 года назад

      @@t0digital кстати да, сейчас почти в каждой вакансии DRF, даже на джуна

    • @doskuloff
      @doskuloff 4 года назад

      Диджитализируй! Спасибо большое! Буду ждать с нетерпением!

  • @МаксКузнец-п1б
    @МаксКузнец-п1б 4 года назад +2

    ахах, под такую музыку надо томным голосом говорить... "твой код самый лучший"... "у тебя не бывает не обработанных исключений".... "у тебя всегда всё компилится с первого раза"... "чак норис восхищается твоим кодом"....
    ЗЫ спасибо за ролик))

  • @uszr1
    @uszr1 4 года назад

    Праздник каждый день!=) так держать)

  • @mellicape
    @mellicape 3 года назад

    Слишком полезно, чтобы быть. Спасибо за багаж знаний. Лайк репост и благодарность

  • @wcodes-kk2pr
    @wcodes-kk2pr 4 года назад +28

    Грузовик лайков разгружать куда, командир?

    • @t0digital
      @t0digital  4 года назад +11

      Было бы круто разгрузить здесь!

  • @lleballex3248
    @lleballex3248 4 года назад +2

    Просто лучший! Очень полезная информация. Тебе бы стримас провести вместе с Мурренганом, вообще топ будет!

  • @konstantinrozhkov7613
    @konstantinrozhkov7613 4 года назад

    Как всегда концентрированная полезная инфа)

  • @govdamikhaylo4183
    @govdamikhaylo4183 4 года назад

    Очень полезный видос:)

  • @ЮрийГалкин-м9ю
    @ЮрийГалкин-м9ю 4 года назад

    Ну ты фигачишь как автомат. Каждый день новое видео - очень круто ᕙ( ͡° ͜ʖ ͡°)ᕗ

  • @andrewlobanov8859
    @andrewlobanov8859 4 года назад

    Как всегда отличное видео, проясняющее не очень ясные моменты. Лутц достаточно туманно на мой взгляд высказался в плане рекомендаций по использованию исключений. Спасибо, что разложил по полочкам.

  • @bytheway7
    @bytheway7 Год назад

    Спасибо! А какие возникают накладные расходы при использовании исключений? Если обработка их реализована в коде, но они не срабатывают (то есть, код правильный, работает правильно), то влечёт ли это замедление исполнения? Дополнительное использование памяти? Насколько и когда стоит обращать на это внимание (если есть накладные расходы)?

  • @ОлегЗавитаев
    @ОлегЗавитаев 4 года назад

    Алексей, а можно что-нибудь про юниттесты еще? Однозначно лайк! :)

    • @t0digital
      @t0digital  4 года назад +1

      Да, планирую материал

  • @viktor_borodin
    @viktor_borodin 2 года назад

    Здравствуйте. Что думаете по поводу создания декораторов для обработки исключений?

    • @t0digital
      @t0digital  2 года назад

      Да, в каких-то сценариях можно и так

  • @andreymishuk2188
    @andreymishuk2188 4 года назад

    что лучше использовать и что быстрее сработает и что будет наглядней, декоратор проверки или все же try catch

  • @nucluster
    @nucluster 4 года назад

    Алексей, спасибо что чаще стали баловать нас подписчиков новыми видео. Фоновая музыка, мне кажется, только лишняя.

    • @t0digital
      @t0digital  4 года назад

      Да, похоже, что лучше без музыки

  • @MS-fu3zf
    @MS-fu3zf 4 года назад

    Просьба записать видео о том, как быстро разбираться в коде уже существующего проекта. Вот посадили новичка на проект, а там куча файлов и папок, множество встроенных друг в друга функций и так далее. Как распутывать этот клубок? С чего начинать изучение чужого кода? Возможно, есть какие-то приемы картирования кода проекта? Хотелось бы такой контент.

    • @t0digital
      @t0digital  4 года назад +2

      Этот вопрос решает документация к проекту. Не многотомная устаревшая фигня, а несколько страничек с описанием структуры проекта, архитектуры и решаемых задач. По нему человек уже может вникнуть быстрее, что к чему. Ну и живое общение никто не отменял, после ознакомления с кодом и документацией можно пообщаться с новичком, ответить на вопросы и тд, живое общение очень полезно.

  • @NickVoid
    @NickVoid 4 года назад

    Привет.
    Спасибо за видео.
    Оффтопик - зачем Вы каждый раз выходите из vim что бы запустить приложение? :)
    :!python %
    либо добавить hotkey
    :nmap :!python %

    • @t0digital
      @t0digital  4 года назад +1

      привычка:)

  • @MrBuzzyBumble
    @MrBuzzyBumble 4 года назад +2

    Спасибо за контент! Просьба - делать фоновую музыку потише, иногда она выходит на громкость почти равную голосу и это отвлекает от сути.

  • @MichaelKondrashin
    @MichaelKondrashin 4 года назад

    ImportError - отличная штука для нестандартных модулей (можно после except выдать диагностику, что нужно сделать, чтобы модуль появился) и для создания кода, совместимого с Python 2.

  • @TheFomars
    @TheFomars 4 года назад +25

    "AssertionError - забавная штука, не очень часто ее используют..." - кто-то спалился, что не пишет тесты)

    • @mmospanenko
      @mmospanenko 4 года назад

      а зачем тебе в тестах обрабатывать исключение?) тут уже наверное проблема в архитектуре раз тест может быть упавшим, но ... "неочень" :)

  • @zenbool7658
    @zenbool7658 2 года назад

    Фоновая музыка - это ужасно.
    Благодарю за уроки, качественно и полезно!

  • @eugeneburdin704
    @eugeneburdin704 4 года назад +1

    Как же "Better is ask forgiveness, than permission"?))) (По поводу try-except vs if-else). Интересный кейс по поводу скорости обработки и затрат ресурсов. Есть доказательства? хотелось бы проверить)
    Спасибо за контент, зашёл отлично )

  • @lucius9599
    @lucius9599 4 года назад

    Здравствуйте Алекскей! К сожаленю я не мог попасть на стримы, но у меня к вам есть вопрос касательно немного другой темы. Когда я использую typehintings, как мне указать, что в качестве переменной должна быть функция или или класс. В документации нашел только object. Значит ли это то, что для решения моей проблемы надо указывать object? Заранее спасибо

    • @t0digital
      @t0digital  4 года назад +1

      Привет! from typing import Callable - это тип для функции, для класса тип type.
      То есть хинт для функции some_func: Callable, для класса (если это прям любой-любой класс) - some_class: type.

    • @lucius9599
      @lucius9599 4 года назад

      @@t0digital Большое спасибо

  • @rbalabekyan1286
    @rbalabekyan1286 4 года назад

    Спасибо. Можно ещё об api testing (pytest) рассказать?

  • @mephistos_the_one
    @mephistos_the_one 9 месяцев назад

    Здравствуйте. Начал изучать python, и не совсем понимаю: когда именно нужно пользоваться исключениями, если практически все можно проверить конструкцией "if-else"? Можно ли совсем обойтись без обработки исключений?

  • @beketov2126
    @beketov2126 4 года назад +1

    tnx boss!

  • @ИванИванов-н9т9ъ
    @ИванИванов-н9т9ъ 4 года назад

    *Спасибо*

  • @Noable
    @Noable 4 года назад +1

    Офигенная фоновая музыка. Помедетировал. Спасибо😁

    • @t0digital
      @t0digital  4 года назад

      Отлично :) хотя понравилось не всем

  • @MrDimka12101
    @MrDimka12101 4 года назад

    В моём понимании. Всё то, что нельзя обнаружиться сразу, надо ловить, когда будет падать.
    Т.е., например, при запросе на сервер можно структуру body неплохо так прошерстить по трафарету, а не пускать дальше и ждать, упадёт не упадёт.
    Но бывают ситуации, где на берегу сразу не разберёшься.

    • @MrDimka12101
      @MrDimka12101 4 года назад

      Но также, наверное, следует выдерживать баланс, беря во внимание подход "Easier to ask for forgiveness than permission"

  • @MrVolodichev
    @MrVolodichev 4 года назад

    Спасибо!

  • @ExTaaaaaZ1
    @ExTaaaaaZ1 4 года назад +9

    Алексей, что за продуктивность?))

    • @t0digital
      @t0digital  4 года назад +7

      Нашёл трёхлитровую банку с кокаином! *шутка

    • @romarioyeah
      @romarioyeah 4 года назад

      Диджитализируй! Задонатили что ли? 😂

    • @t0digital
      @t0digital  4 года назад +3

      @@romarioyeah только тссс!

    • @romarioyeah
      @romarioyeah 4 года назад

      Диджитализируй! Могила 🤐

    • @eugeneb638
      @eugeneb638 4 года назад

      Спасибо за видео !!!

  • @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 ?

  • @MXMPWASHERE
    @MXMPWASHERE 4 года назад +3

    Спасибо за видео. Как всегда все круто. Но вот утверждение, что exception более ресурсоемко чем if..else заставило меня задуматься. Я не один раз и не от одного человека слышал, что в Python исключения ничего не стоят и дешевле кинуть исключение, чем делать if...else. Что-то сильно изменилось в этом плане со времён Python2? Или меня изначально ввели в заблуждение. Хотелось бы подробностей.
    С заменой исключений на if...else правильно замечено, что если всё-таки не удалось завершить операцию, то исключение нужно кинуть. А то были прецеденты когда проект становился похожим на PHP 😅

    • @t0digital
      @t0digital  4 года назад

      Вот что об этом пишут на офсайте docs.python.org/3/faq/design.html#how-fast-are-exceptions

    • @ripichipina
      @ripichipina 4 года назад +1

      @@t0digital На мой взгляд в видео получилось немного неоднозначно про if-else vs. try-catch.
      Нельзя забывать про подход "Easier to ask for forgiveness than permission".
      Вот тут есть отличный ответ на эту тему: stackoverflow.com/a/7604717
      Он дополняет пример из ссылки, которую вы привели.

    • @dmytrokorbanytskyi1586
      @dmytrokorbanytskyi1586 4 года назад

      изначально во главу угла ставится читабельность и поддержка кода. Есть случаи, когда try..except намного выразительнее, чем if..else. Лучше сэкономить десятки минут на разбор кода, чем микросекунду на его исполнение. Так что сильно заморачиваться по этому поводу не стоит.

  • @bpospanov
    @bpospanov 4 года назад

    лучший айти блог

    • @t0digital
      @t0digital  4 года назад

      Спасибо:) Стараемся!

  • @Uni-Coder
    @Uni-Coder 4 года назад

    "Исключения дорогие". Да, для обработки исключений создается отдельный стек либо специальные элементы стекфрейма. Исключения дают рантайм-оверхед, даже если ни одного исключения в вашей программе не произойдет, поскольку эти самые элементы стекфрейма нужно создать, а потом освободить. Это одна из причин, почему системный код даже сейчас пишется на C, или в крайнем случае на C++ с отключенными исключениями.
    "Языки программирования без исключений". В первую очередь это, конечно, C. Также могу добавить Rust, прилично в нем работал, там своеобразный подход к обработке исключительных ситуаций, и можно обойтись без кучи if-ов для их обработки. Обычно пишешь "something.unwrap()" (самый ленивый вариант), "something.expect("ЧётоНеТо")" или просто "something?" (вопросительный знак прокидывает исключение вверх по стеку вызовов, лишь бы возвращаемый тип соответствовал).

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil 3 года назад

    24:33 отлов всех неотловленных ислючений

  • @ВолодимирЗонтов
    @ВолодимирЗонтов 4 года назад

    Спасибо за видео. Музыка заднего фона какая-то пульсирующая и иногда звучит достаточно громко и отвлекает. Не могу сказать, что в тишине лучше - дело вкуса, но если можно сделать уровень фона тише - будет здорово ))

    • @t0digital
      @t0digital  4 года назад

      Спасибо! Приму к сведению!

  • @MEZHGANO
    @MEZHGANO 2 года назад

    Спасибо за видео)
    Кстати, в будущих версия Питона вроде как обещают что исключения не будут оказывать столь существенного влияния на скорость

  • @yakoro4ka112
    @yakoro4ka112 4 года назад

    а видосики по go не планируются? было бы круто если закодить в реалтайме что-то не сложное.

    • @t0digital
      @t0digital  4 года назад

      Планируются обязательно. Планов огромное количество. Время найти бы.

    • @yakoro4ka112
      @yakoro4ka112 4 года назад

      @@t0digital Я все хочу немного погрузиться в него, но как-то руки тоже не доходят. Будем ждать!

  • @vdarasun
    @vdarasun Год назад

    Самый интерес-то и не рассказан - нелинейность и освобождение ресурсов, проблемы получения неконсистентности. Очень бы хотелось услышать от Вас на конкретных "сложных" примерах.

  • @kriskaruzo1398
    @kriskaruzo1398 4 года назад +1

    24:03
    как вы f1() и f2() перместили ровно на один таб,
    я сам пользуюсь вимом, но не знаю про эту фичу

    • @t0digital
      @t0digital  4 года назад +2

      > или >> в зависимости от того, выделены ли сдвигаемые строки

    • @kriskaruzo1398
      @kriskaruzo1398 4 года назад +1

      @@t0digital работает! спасибо)

    • @t0digital
      @t0digital  4 года назад +2

      @@kriskaruzo1398 отлично :) с вимом можно постоянно находить новые фишки

  • @alexanderserzhan
    @alexanderserzhan 2 года назад

    На 2:15 минуте подвинулась кружка)

  • @knarg4682
    @knarg4682 6 месяцев назад

    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  6 месяцев назад

      да, a or b, конечно, не проверяет именно на None

  • @eugeneburdin704
    @eugeneburdin704 4 года назад

    Как по мне нужно использовать исключения там где они элегантно вписываются и уменьшают затраты по ресурсам. Аля get or create в orm-ке

  • @vrabosh
    @vrabosh 4 года назад

    Кстати только, что проверил скорость обработки ифов и 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  4 года назад

      Так и есть, исключения надо использовать там, где они будут вызываться редко docs.python.org/3/faq/design.html#how-fast-are-exceptions

  • @megalun_
    @megalun_ 3 месяца назад

    Прекрасное видео, но звук на фоне мешает

  • @vrabosh
    @vrabosh 4 года назад

    Мне пхп в этом плане нравится.. там исключения логируются автоматом и поэтому экзепщином не пользовался.. а где понимал, что будет исключение ифы делал..
    И еще что хорошо в пхп было, что там каждый раз скрипт запускается и все приложение из за этого не падает.. И правится это все на лету, просто заменой файла, без перезагрузки проекта.
    Вот интересно в питоне подобный стиль программирования можно сделать? Если каждый раз от nginx запускать скрипт, это будет дорого по времени? или может еще как нить?

    • @alexjuly7097
      @alexjuly7097 4 года назад

      Могу соврать, но ведь в пхп нет "всего приложения", каждый скрипт запускается интерпретатором отдельно?

    • @vrabosh
      @vrabosh 4 года назад

      @@alexjuly7097 вот как раз, за счет того, что отдельно запускается каждый раз, то можно не парится об исключениях как таковых.. а вылавливать ошибки в логах и править их и тогда получается более чистый код..

  • @AlexGott
    @AlexGott 4 года назад

    Я конечно вдамся в изотерику контентмейкерства, но мне кажется темп музыки должен коррелировать с голосом. За видос спасибо, всё было очень понятно и как всегда полезно. #лайкпередпросмотром

    • @t0digital
      @t0digital  4 года назад

      да, я еще совсем не постиг дзен подбора звукового сопровождения

  • @ДанилЧарушин-о6б
    @ДанилЧарушин-о6б 4 года назад

    Читал где-то, что по правилам нейминга лучше к названию кастомного исключения в конце приписывать Error, а не Exception

  • @Johniooooo
    @Johniooooo 4 года назад

    кстати, еще на стриме писали , что NotImplementedError сработает только когда этот метод у инстанса вызовут. А abc.ABC не даст создать экземпляр класса, наверное это все-таки поудобнее

    • @t0digital
      @t0digital  4 года назад

      Да, это не полный аналог abc

  • @SoulPervert
    @SoulPervert 4 года назад

    большое спасибо за видео, ждем следующих выпусков с нетерпением!
    также хотелось бы больше узнать про тестирование в Django, буду очень благодарен за освещение этой обширной темы в будущем)

    • @t0digital
      @t0digital  4 года назад +1

      Спасибо! Возможно сделаем материал

  • @scadeline805
    @scadeline805 4 года назад

    Классное видео! Но если честно не понимаю зачем вообще нужно использовать Exceptions, в каких ситуациях, если можно написать if else. Объясните пожалуйста

    • @n3tium
      @n3tium Год назад

      Для отладки применять. А потом уже более детально писать код.

  • @mmospanenko
    @mmospanenko 4 года назад

    блин музыка на фоне под которую я работаю, получается мозг думает что работать нужно даже при просмотре отдыхающего видео))

  • @Johniooooo
    @Johniooooo 4 года назад

    Хорошие видео у вас. Вы похожи на доброго кота из мультфильма, это специально подобранный образ?)

    • @t0digital
      @t0digital  4 года назад

      Хахах, спасибо! Даже не знаю:)

  • @Nachmed
    @Nachmed 4 года назад +1

    шЫкарно! Больше питонячего кода!

  • @caesar5122
    @caesar5122 4 года назад +4

    Программа: сорри, блабла....
    Юзер: ну да, ну да, пошел я на...

  • @bolatmukashev2830
    @bolatmukashev2830 4 года назад

    Pycharm "ругается" когда пишешь try-except. Что там нового в PEP? Простой try-except уже не актуален?

    • @dmytrokorbanytskyi1586
      @dmytrokorbanytskyi1586 4 года назад

      после Except указан тип исключения? Ловить всё - плохая примета.

    • @t0digital
      @t0digital  4 года назад

      Скорее всего просто показывает warning на except: без указания конкретного типа исключения, да, как Дмитрий пишет. Это не ошибка, просто пичарм обращает внимание на то, что возможно стоит указать конкретный тип отлавливаемого исключения

  • @grehban
    @grehban 3 года назад

    10:15 оно так-то и не ловится в try/except, его нельза обработать

  • @SergMirny_yt
    @SergMirny_yt 4 года назад

    Я на всех сетевых запросах в десктоп приложениях вешаю try, except, на случай, если нет инета или любое другое исключение, которое может возникнуть из-за чего-то, что не относится к данной системе (навернулся удаленный сервер, оборвалась сеть и т.п.)
    Правильно ли так делать?

    • @t0digital
      @t0digital  4 года назад +1

      Это нормально, главное там отлавливать именно сетевые ошибки, а не базовый Exception, чтобы случайно не захватить другие ошибки, не относящиеся к сетевым, и не приписать их к сетевым

    • @SergMirny_yt
      @SergMirny_yt 4 года назад

      @@t0digital да, над этим поработаю. Спасибо Вам за ценные уроки. Сейчас я отлавливаю базовый Exception, но сначала я пишу функционал, его гоняю и тестирую, а потом уже оборачиваю рабочий код в try ну и обрабатываю Exception. Теперь понимаю, что это как тестить принтами))

  • @C0oo1D
    @C0oo1D 4 года назад

    А как же pep8 (суффикс Error у эксепшена под ошибку)? ;)

  • @CultureofSpeech
    @CultureofSpeech 2 месяца назад

    Салют 🎉 как бодрость духа ⁉️

  • @scifi85
    @scifi85 4 года назад

    "Имеет смbIсл сделать через if-else" - this is a wrong statement.
    try/except will take more time than "if" ONLY when the exception is caught.
    This situation will occur each time exception happens.
    BUT "if" operation occurs EACH time your code is run. Hence, it will steal our performance time.
    That's why EAFP exists in the Python world.

    • @t0digital
      @t0digital  4 года назад

      Дальше идёт поясняющей пример, который, как мне кажется, поясняет эту мысль. Если вырвать из контекста эту фразу, то да, она неверна.