Принцип EAFP в Python, работа с исключениями в Python. Применение принципов Zen of Python

  Рет қаралды 25,505

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

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

Күн бұрын

Пікірлер: 194
@kalik54
@kalik54 4 жыл бұрын
Наверное самый полезный канал по пайтону на русскоязычном ютубе
@t0digital
@t0digital 4 жыл бұрын
Спасибооо!
@ИванИванов-н9т9ъ
@ИванИванов-н9т9ъ 4 жыл бұрын
Ещё Олег Молчанов неплохо объяснял (давно у него роликов не было). И автор этого канала, на котором мы сейчас, безусловно - молодец!
@kalik54
@kalik54 4 жыл бұрын
@@ИванИванов-н9т9ъ Да, как раз когда писал, Олег был на уме как и диджитализируй)
@ИванИванов-н9т9ъ
@ИванИванов-н9т9ъ 4 жыл бұрын
@@kalik54 Да, эти товарищи вносят существенный вклад в развитие python-сообщества в России и русскоговорящих странах.
@govdamikhaylo4183
@govdamikhaylo4183 4 жыл бұрын
@@ИванИванов-н9т9ъ +. скорее он бы вернулся(
@mrhayden992
@mrhayden992 4 жыл бұрын
Отличный контент. Хочется увидеть серию уроков по aiohttp, поддержите лайками чтобы поднять в топ.
@rishatsharafiev
@rishatsharafiev 4 жыл бұрын
starlette и fastapi интереснее
@КириллКириллович
@КириллКириллович 4 жыл бұрын
@@rishatsharafiev aiohttp и asyncio интереснее
@Uni-Coder
@Uni-Coder 4 жыл бұрын
@@rishatsharafiev Асинхрон - концепт современного кодинга, это прям надо. Это есть в C++, C#, Python, Rust и вообще везде (правда, Java немного страдает), это надо изучать не только питоноидам.
@MegaFeel1
@MegaFeel1 4 жыл бұрын
А мне бы Sanic, сколько людей столько мнений))
@cashncarry8
@cashncarry8 4 жыл бұрын
@@MegaFeel1 хорошо, что фреймворков меньше))
@MartinEden-ps6ld
@MartinEden-ps6ld 3 жыл бұрын
блин, это один из лучших каналов по программированию, от души за все советы))
@t0digital
@t0digital 3 жыл бұрын
спасибооо!
@Константин-й1ъ6я
@Константин-й1ъ6я 2 жыл бұрын
классно, что говоришь быстро, не нужно ускорять видео)))
@driewtonmai
@driewtonmai 4 жыл бұрын
Спасибо за контент Алексей. Мне нравится, что вы уделяете внимание картинке и звуку. Предлагаю снять ролик о том, как дебажить на пайчарме. Было бы интересно.
@filipfilip4184
@filipfilip4184 2 жыл бұрын
Приятно слушать, смотреть и учиться. И все без воды. Спасибо!
@Geolimber
@Geolimber 4 жыл бұрын
Шикарный выпуск. Такие ньюансы очень полезны. Даёшь больше best practice примеров из Python и Django!
@chilisten
@chilisten 4 жыл бұрын
Алексей, спасибо большое за вашу работу. Просто и понятно!
@arthurkeller3119
@arthurkeller3119 4 жыл бұрын
серьезно, такая мелочь, но очень полезная инфа, оказывается данные подходы еще и именуются как-то, сколько раз с другими программистами спорили как правильно, как нет (не только питон), теперь же все по полочкам, спасибо за действительно полезный ролик, развития каналу
@toomanof
@toomanof 4 жыл бұрын
Лаконично и доступно! Пять балов за изложение мысли!
@markervictor
@markervictor 4 жыл бұрын
Пару дней назад нашел ваш канал и уже пересмотрел больше половины видео. Рассказывает обо всем очень доступно и интересно! Из тех, что попадались на русском KZbin, наверно, первый канал, который не рассчитан на абсолютно начинающих и не рассказывает, как "Выучить Python за час" или что-то из этой серии. Удачи в развитии!
@rumartru
@rumartru 4 жыл бұрын
Спасибо! Лайк! От других программистов слышал обратное, try/except использовать если по-другому нельзя, т.к. дорогая операция. Хотя тесты которые я видел показывали, что дорогой становится при частой ловле исключений.
@t0digital
@t0digital 4 жыл бұрын
Try/except дешёвый, если не генерится исключение, а генериться оно должно редко, это ведь исключительная ситуация
@copycat774
@copycat774 4 жыл бұрын
Неоднократно задавался вопросом, использовать условия или исключения. А, оказывается, все так просто. Теперь смогу сделать свой код лучше. Благодарю.
@sulfur32066
@sulfur32066 4 жыл бұрын
Можно ли еще видео как до этого было, часовое по django, очень зашел формат, только по django REST)
@KHANZE
@KHANZE 4 жыл бұрын
Спасибо мужик! У тебя много что узнаю. Только уважение к тебе.
@t0digital
@t0digital 4 жыл бұрын
Спасибо!
@Smarandii
@Smarandii 4 жыл бұрын
Продвигаем годноту в массы
@21138532110q
@21138532110q 4 жыл бұрын
Вообще, слышал такое мнение: если знаешь что может пойти не так - используй if-else, так как исключение в питоне довольно медленные. Сами же исключения используются для исключительных ситуаций, когда что то идет не так из за внешних факторов. То есть в примере с диктом я бы использовал if else, в случае сетевого взаимодействия или дискового - уже исключения.
@SourPassionParty
@SourPassionParty Жыл бұрын
Да чем всех dict.get( ) не устраивает?
@swimmwatch
@swimmwatch 4 жыл бұрын
Лайк однозначно! Качество контента растёт на глазах!
@eugeneburdin704
@eugeneburdin704 4 жыл бұрын
Спасибо за выпуск. Хорошо прояснил официальные подходы !) Круто!
@МаксимЗиновьев-т5л
@МаксимЗиновьев-т5л 4 жыл бұрын
Как интересно, а я всеми силами старался избежать try except, приму к сведению, спасибо.
@Кантригоспел
@Кантригоспел 4 жыл бұрын
Я так же)
@MA-channel1
@MA-channel1 4 жыл бұрын
Оно тоже затуманивает логику как и if на каждом шагу. Если except на каждом шагу то это не лучше а даже медленнее А если не на каждом шагу проверка нужна то можно и без if'а, и без локальных except (только большой "всё-ловящий" try/except)
@andreymishuk2188
@andreymishuk2188 4 жыл бұрын
суперская подача инфы, больше видео как надо и как не надо !)))
@ЕгорМитрофанов-г7ъ
@ЕгорМитрофанов-г7ъ 4 жыл бұрын
Я тоже за подход, что легче просить прощения, чем разрешение. Спасибо за прекрасный материал.
@makediffdev
@makediffdev 4 жыл бұрын
Отличный контент. Круто прогрессировал последнее время
@t0digital
@t0digital 4 жыл бұрын
Спасибо! А что бы вы отметили, что за последнее время стало лучше на ваш взгяд? Темы видео, подача, картинка, звук, ещё что-то? Полезно будет знать. Спасибо!
@russianstan
@russianstan 4 жыл бұрын
Алексей, круто! Спасибо большое) Очень бы хотелось побольше подобных видео о лучших практиках
@westerling6368
@westerling6368 4 жыл бұрын
А что насчет скорости выполнений? Читал, что try/except выполняются медленнее, чем условия, поэтому в своём коде обычно их не использую.
@ievgenk.8991
@ievgenk.8991 4 жыл бұрын
@@avazart614 и не про чистоту кода, по всей видимости
@mmohelp
@mmohelp 4 жыл бұрын
Спасибо ,как всегда огонь инфа!
@ivanshvedov1823
@ivanshvedov1823 4 жыл бұрын
Спасибо за годноту, а когда будут выпуски про aiohttp?
@t0digital
@t0digital 4 жыл бұрын
Скоро будут!
@TarTarus
@TarTarus 4 жыл бұрын
Добрый Комент!
@nik-ix2md
@nik-ix2md 4 жыл бұрын
Как всегда отличное и полезное объяснение по делу! Спасибо!
@vyacheslavgvorus3883
@vyacheslavgvorus3883 4 жыл бұрын
Круто и очень полезно! Дьявол скрывается в деталях)
@t0digital
@t0digital 4 жыл бұрын
100%!
@MrDimka12101
@MrDimka12101 4 жыл бұрын
Хотел спросить. Будут ли видео по Flask? На мой взгляд это очень показательный фреймворк, т.к. есть большая свобода действия.
@uszr1
@uszr1 4 жыл бұрын
Спасибо! Как всегда отличная подача и полезная информация!
@balabunat
@balabunat 4 жыл бұрын
Очень давно так делаю, теперь просто знаю как это называется ))) Спасибо за контент!
@SUPERustam
@SUPERustam 4 жыл бұрын
В первом примере LBYL подхода, должен быть еще else с выводом текста об не найденном ключе))
@eldorpulatov566
@eldorpulatov566 4 жыл бұрын
Спасибо за Python контент!
@t0digital
@t0digital 4 жыл бұрын
Рад, что полезно:)
@bistronousogust
@bistronousogust 4 жыл бұрын
"Да прибудет с вами сила" - это уже устраешая фраза. Надо говорить: "Таков путь!" ;) Спасибо за кусочек питонячей дисциплины.
@ibragim1989
@ibragim1989 4 жыл бұрын
Все в видео очень лаконично и ясно, будто хороший код на питоне. :) Вопрос, почему часто читаю в книгах по computer science, что использование исключений является не очень хорошей практикой программирования? И даже при создании своего языка Goland авторы, например, решили отказаться от поддержки исключений. Чем это вызвано?
@ievgenk.8991
@ievgenk.8991 4 жыл бұрын
Потому что исключения начинают использоваться не по назначению, они разворачивают стек вызовов и добавляют оверхед по производительности и потребляемой памяти только ради того, что бы программисты смогли снова вернуться во времена оператора goto. Исключения добавляют неясности в кодоввю базу и надо усердно курить мануалы что бы понять может ли какая то функция прокинуть ошибкуи и в каких ситуациях
@СергейНовожилов-я6я
@СергейНовожилов-я6я 4 жыл бұрын
Очень полезное видео! Спасибо!
@tahirjalilov
@tahirjalilov 4 жыл бұрын
Блин, почти не использовал try/except в своем коде, везде пихал if/else. А после этого видео, буду писать правильно. Спасибо!!!
@victortamanov
@victortamanov 4 жыл бұрын
Спасибо! Как раз вот пишу код и думаю об этом. Очень кстати! Было бы супер как-нибудь поглядеть на код модульных тестов, которые в том числе проверяют такие ветки с прерываниями, чтобы велосипед не изобретать.
@LewaSGN
@LewaSGN 4 жыл бұрын
А я вместо кучи ифов пользуюсь свичкейзом через метод словаря .get(key, default=None). Получается очень красиво и читаемо! Хороший ролик, лайк!
@t0digital
@t0digital 4 жыл бұрын
Дааа, .get очень удобный метод, тоже часто использую! Спасибо!
@ОлегК-б2ю
@ОлегК-б2ю 4 жыл бұрын
Хороший ролик, спасибо :)
@bpospanov
@bpospanov 4 жыл бұрын
офигенное видео, спасибо!
@azamatmuratshin
@azamatmuratshin 4 жыл бұрын
Спасибо за контент! Нужно скинуть в чаи группы, им должно понравиться)
@psychopiece
@psychopiece 4 жыл бұрын
Отличное видео! Алексей, когда же будет запуск обучения?
@t0digital
@t0digital 4 жыл бұрын
Скоро-скоро!
@tihon4979
@tihon4979 11 ай бұрын
Огонь! Полностью согласен!!!
@gatapov
@gatapov 4 жыл бұрын
Отлично рассказываете! У вас есть видео об ООП в python? Если нет, то было бы круто от вас услышать базовые вещи об этом! Спасибо за ваш труд!
@ВладКалошин-о4б
@ВладКалошин-о4б 4 жыл бұрын
Полезное видео. Больше подобных)
@t0digital
@t0digital 4 жыл бұрын
Спасибо!
@z0uRChannel
@z0uRChannel 4 жыл бұрын
Просто и грамотно. Пасиб
@Влад-ъ4м1м
@Влад-ъ4м1м 4 жыл бұрын
Классный формат, рассказывать про такие маленькие фичи. И понимание зена возрастает, и код лучше будет
@ТимурКутуев
@ТимурКутуев 4 жыл бұрын
Когда будет урок про git? В первых видео обещали, но так и не разобрали данную тему :( Сейчас на работе пришлось самому разбираться. Очень жалею что не юзал это раньше.
@t0digital
@t0digital 4 жыл бұрын
Я писал в 2013м статью по базовому гиту - goloburdin.blogspot.com/2013/11/git-bitbucket-20.html Видео тоже планирую, просто хочется сделать что-то глубже, чем просто commit/pull/push/merge/checkout
@MrBytmin
@MrBytmin 4 жыл бұрын
Как вас вообще на работу взяли)
@peronium_
@peronium_ 4 жыл бұрын
Круто снял!
@MrDimka12101
@MrDimka12101 4 жыл бұрын
В защиту LBYL скажу, что сейчас в python есть довольно много инструментов, с помощью которых можно делать подобные проверки красиво и прозрачно. К примеру, библиотека trafaret. Всегда её использую при обработке тела запроса клиента на сервер.
@onio2942
@onio2942 4 жыл бұрын
Не является ли в случае со словарями использование метода get более предпочтительным вариантом получения значения по ключу? Или этот метод по сути и есть отображение EAFP?
@t0digital
@t0digital 4 жыл бұрын
если задача просто получить значение по ключу, а если ключа такого в словаре нет, то взять некоторое дефолтное значение - то да, метод get предпочтительнее. EAFP он не только про словари, это общий принцип, просто на словарях его часто показывают. В видео есть пример с открытием файла и возможным состоянием гонки без EAFP
@onio2942
@onio2942 4 жыл бұрын
@@t0digital Спасибо за ответ! :)
@РоманКух-ч8щ
@РоманКух-ч8щ 4 жыл бұрын
1. try except сложнее чем использование if key in, в читабельности для человека, из за количества возможных отрицательных срабатываний, которые спрятаны в исключениях. И if является более явным и однозначно трактуемым, нежели exception. 2. Исключения крайне ресурсоемки, и программирование на них, если можно обойтись без них, это табу. В процессе, появления исключения, в питоне собирается информация о нем, что требует много ресурсов, и останавливает поток исполнения. Такие места можно заддосить. 3. Ошибки лучше оформлять if key not in data: raise Exception('исчерпывающее описание данной ситуации') нежели то что вы привели в пример. Ваш пример можно часами трактовать, а какую ситуация для чего разраб покрыл этим exception.
@t0digital
@t0digital 4 жыл бұрын
Исключение такие же дешёвые, как if, если не возникает исключения, а возникать они должны редко исходя даже из названия. Что if более читаем, чем except - нет же. В исключении явно понятно, какая логика нормальна, какая исключительна, в if else обе ветки равнозначны и без контекста, без коментов это непонятно. Райзить Exception вместо KeyError или IndexError - не надо.
@РоманКух-ч8щ
@РоманКух-ч8щ 4 жыл бұрын
@@t0digital 1. Style docs.python.org/3.8/faq/design.html#how-fast-are-exceptions 2. Performance paltman.com/try-except-performance-in-python-a-simple-test/ 3. - Как в коде, который покрыт несколькими слоями try except finally, излишние try, усложняет структуру кода, доп отступами от которых не избавиться. - Две строки, лучше чем четыре. - Как быть здесь? На каком ключе споткнулись? try: value = data['key1']['key2'] except IndexError: pass - может все же вот так понятней? if 'key1' not in data: raise Exception('исчерпывающий ответ что пошло не так') исполнение продолжилось. - к какому жесткачу, приводит неосторожное использование. try: value = function() except Exception: pass - трактовки. Что можно ожидать от if key in data ? Наверно, проверку вхождения, в массив, в строку или есть ли ключ в hashmap, зависит от типа данных data. Что можно ожидать от try except. Очень много всего, особенно когда обернута функция, и глубину вызовов внутри этой функции не видно, и на любом этапе может произойти исключение, которое этот перехват скроет. А бывает и приведет к некорректному исполненbю алгоритма. - нарушение логики. С исключениями, мы предпочитаем сначала наступить в кучу навоза, а потом принимать решение. А проще, посмотреть прежде чем наступать нет ли там кучу с помощью if. Что на итог: Эту конструкцию, опытный разработчик назовет вкусовщиной. Я же против этих конструкций, т.к. мы не все опытные и знаем все подводные камни и отдаем себе отчет в них, и суем их всюду. И это приводит к страшным поломкам. Чего не случится, если бы использовали if.
@MrPavelFrolov
@MrPavelFrolov 4 жыл бұрын
я, в последнее время перешел assert'ы: from assertpy import assert_that some_dict = {} assert_that(some_dict, 'Dictionary').contains_key('key') AssertionError: [Dictionary] Expected to contain key , but did not. Да, не так оптимально, да, асерты не совсем про валидацию, но, на объёмах - работает лучше, чем куча try/except, в плане качества кода, читабельности. Где нужно оптимальнее - конечно меньше валидаций. Разработчки библиотеки сказал, что я пользуюсь defensive assertions, что бы это не значило :).
@MrPavelFrolov
@MrPavelFrolov 4 жыл бұрын
@Вячеслав Украинцев так и есть. Поэтому они не про вадидацию. Но тут сторонняя библиотека, ну и асерты, прямо по назначению, я что-то и не использовал никогда.
@zshfan
@zshfan 4 жыл бұрын
Огромное спасибо за видео, хоть пока мне и без толку данная информация (не тот уровень скила), но прям от видео веет дружеским наставничеством. Было бы кстати неплохо посмотреть ваш подход к началу проекта, с чего стоит начинать писать. P.S. А mailto:mailto: так и не исправили :-)
@TeppopucT
@TeppopucT 4 жыл бұрын
Очень, очень не нравятся блоки try except в коде. Единственный момент, когда могу пойти на компромисс - это интеграции - различные запросы. Но при возможности, закидал бы камнями разрабов в момент разработки либ, методы которых бросают исключения (привет request timeout error). Мало того, что сами блоки занимают много места и делают код менее читабельным, так некоторые просто напишут "except: pass" и спят спокойно. Да и в целом... все ошибки не переловишь и этот домик из "except ...: ..." может расти и расти. И это одна из причин, почему перехожу потихоньку на Golang и пишу не dictionary[key], а dictionary.get(key) и обрабатываю None. С файлом пример понравился, но будем надеиться, что, во время работы с ним одного потока, другой не делает критических изменений с флогом "w+".
@dddyom
@dddyom 4 жыл бұрын
Спасибо!
@pavelgrishin
@pavelgrishin Жыл бұрын
Есть мнение, что содержимое try выполняется 2 раза. 1й раз на пробу брода, 2й раз на переход брода. Поэтому если много проходов по траю - будет растрата ресурсов
@Игорь-ч6ф3и
@Игорь-ч6ф3и 4 жыл бұрын
Обожаю свои программы заворачивать снизу доверху в except Exception! Правда я обычно пишу сервероподобный софт, а такие вещи делаю, чтобы весь процесс не упал из-за пропущёной запятой в тридевятой вьюхе.
@rmatveev
@rmatveev 4 жыл бұрын
Последний фрагмент кода нужно было написать так, чтобы *try-except* был внутри функции?
@t0digital
@t0digital 4 жыл бұрын
try: something = some_dict["key"] except KeyError: # do some stuff pass else: some_func(something) Напр, так
@arturlomakin3555
@arturlomakin3555 4 жыл бұрын
Круто!
@АнтонинаСмет
@АнтонинаСмет 4 жыл бұрын
Спасибо, лайк!
@kostyaten
@kostyaten 4 жыл бұрын
try/except вызывает отдельный стек Python в блоке try , по этому он будет медленнее. По этому с точки зрения языка вызов if 'key' in dict будет быстрее. if 'key' in dict и dict["key"] не вызывает два раза поиск ключа, а один раз, так как в стеке индекса он будет первый и пайтон всего лишь сравнит тот ли ключ.
@t0digital
@t0digital 4 жыл бұрын
Исключения не медленнее if/else. Исключение медленнее только если оно происходит, но оно должно происходить редко, что следует даже из названия, исключение создано для исключительных ситуаций. docs.python.org/3/faq/design.html#how-fast-are-exceptions
@kostyaten
@kostyaten 4 жыл бұрын
@@t0digital Да глянул исходники для try если ключ проверяют вызывают _PyObject_GetDictPtr , для OS ещё не придумали как сделать try быстрее.
@kostyaten
@kostyaten 4 жыл бұрын
​@@t0digital Ещё работает для Tuple
@dmitriyobidin6049
@dmitriyobidin6049 4 жыл бұрын
В примере не совсем понятно, какое требование стоит в ТЗ. Т.к. в зависимости от этого может быть и If лучше, если ключа у нас действительно может не быть в словаре. Почему-то вы изначально за аксиому взяли, что нормальное поведение - это когда ключ есть. А если это не так? То нормальным будет уже if... Да и к тому же пример с if не полон, если добавить туда else с выводом той же ошибки, то разница уже не так очевидна. И почему во втором примере нельзя написать так? try: with open(tmp_file) as f: print(f.read()) except IOError as e: print("Error")
@ievgenk.8991
@ievgenk.8991 4 жыл бұрын
наверно что бы можно было понять где падает open а где read. Но это как то нелепо описывать условную логику через эксепшены.
@BagsySigel
@BagsySigel 4 жыл бұрын
Полезная инфа
@sonicsp3149
@sonicsp3149 4 жыл бұрын
Было бы интересно от вас послушать как SOLID применяются в Python. Думаю тема достаточно непростая и очень важная!
@kalik54
@kalik54 4 жыл бұрын
github.com/heykarimoff/solid.python
@cashncarry8
@cashncarry8 4 жыл бұрын
А точно стоит ронять весь код ради ключа/файла? В логи записать ERROR недостаточно будет?
@t0digital
@t0digital 4 жыл бұрын
Ронять весь код не надо, если это не фатальная проблема, с которой невозможно продолжать. Обработка исключений и eafp и позволяет не убивать программу.
@sw1881
@sw1881 4 жыл бұрын
Добрый коммент=)
@t0digital
@t0digital 4 жыл бұрын
спасибо:)
@Markisi0
@Markisi0 4 жыл бұрын
А в плане ресурсов что дешевле if или try/except? Что-то мне подсказывает, что первая конструкция...
@t0digital
@t0digital 4 жыл бұрын
try/except плюс-минус такой же дешевый, как и if, если не возбуждается исключение. Когда оно возбуждается - это дороже, чем if. Но соль в том, что исключение оно на то и исключение, что должно возбуждаться редко.
@Markisi0
@Markisi0 4 жыл бұрын
@@t0digital Спасибо за ответ!
@doomymax577
@doomymax577 4 жыл бұрын
я так и не понял объясните еще раз- нужно всегда проверять есть ли ключ в структуре данных и потом его применять?
@t0digital
@t0digital 4 жыл бұрын
Всегда не надо, надо, когда есть вероятность, что ключа нет в словаре. Когда что-то может пойти не так в программе, на это надо заложиться
@doomymax577
@doomymax577 4 жыл бұрын
@@t0digital вот на фронтэнде так всегда приходится делать потому сервера часто падают и поэтому в большинстве случаев так приходится делать
@pythondeveloper252
@pythondeveloper252 3 жыл бұрын
4:56 у вас при исключении файл не закроется. И кстати конструкция with закрывает файл после действий, но здесь это не поможет.
@Фанатик-к5т
@Фанатик-к5т 4 жыл бұрын
Что там по курсу??
@antontsygulev6599
@antontsygulev6599 Жыл бұрын
С меня предоставляется коммент за годный контент! Жаль, что задонатить не могу(
@konkon4658
@konkon4658 4 жыл бұрын
Злой комментарий))) Спасибо за видео!
@mafia2mpru
@mafia2mpru 4 жыл бұрын
Да, но только конструкция try except потребляет больше ресурсов чем if, python для блока try копируются все переменные и уже с копиями выполняются операции из блока try чтобы не запороть основной цикл программы и не испортить переменные если код в try свалиться в исключение и продеться откатывать
@ВасяФомин-д4о
@ВасяФомин-д4о 4 жыл бұрын
Анонсируйте подалуйста примерную дату курсов
@PikaCh-t7i
@PikaCh-t7i 4 жыл бұрын
God bless you!
@kotonyahi
@kotonyahi 4 жыл бұрын
4:44 а разве не лучше считывать тоже в блоке try? Вдруг во время чтения что-то произойдёт. А, точно после открытия файла для чтения файл полностью принадлежит процессу и ошибки быть не может... поэтому покрасивше будет выделить чтение в блок else
@mcolegon
@mcolegon 3 жыл бұрын
Ээээ...круто)
@vladburba5734
@vladburba5734 4 жыл бұрын
Хороший Рол вкусный! Хорошо зашёл) Кто такие Катаны? «здорова Катаны»
@drdeepdreamer7090
@drdeepdreamer7090 4 жыл бұрын
Думаю, что имеется в виду кОтаны. Ну т.е. мальчики выросшие из котяток... 😃
@ГеоргийТимофеевский-х9х
@ГеоргийТимофеевский-х9х 4 жыл бұрын
Вроде сишники (особенно эмбеддщики) говорят, что исключения какие-то дорогие и слишком медленные из-за того, что там какие-то манипуляции со стэком происходят. Это правда?
@maxzhenzhera
@maxzhenzhera 4 жыл бұрын
А если обернуть весь код блоком трай/эксепт, чисто в целях отлова неожиданных ошибок?
@MA-channel1
@MA-channel1 4 жыл бұрын
Можно. Только получите эту неожиданную ошибку и надо неожиданно с ней разбираться. Тут искусственные примеры были и в реальности все сложнее. И проще. Нет одного такого EAFP на всем случаи жизни. if конечно лучше, но просто не всегда надо или придется этот if включать
@dgrigorev
@dgrigorev 4 жыл бұрын
Пасиб)
@Dake6i
@Dake6i 4 жыл бұрын
Я не спрошу "что такое принцип EAFP", я спрошу "кто такие котаны или катаны"
@cashncarry8
@cashncarry8 4 жыл бұрын
Те кто отключают интернет во время деплоя))
@евгешалулиша
@евгешалулиша 4 жыл бұрын
Злой писать не охота, а вот добрый, пожалуй, оставлю. У меня такая проблема. Год назад начал изучать Питона вообще с нуля. С такого уровня, что вообще первый раз открыл cmd. Сейчас пишу программы для своего бизнеса, но у меня нет развития, потому что имеющиеся знания покрывают потребности моего дела. Я понимаю, что с таким уровнем ни в какую компанию не попадёшь, а хотелось бы связать себя с профессией программиста. Прямо беда. Хочу развиваться, но вместо этого бег на месте.
@meh2414
@meh2414 4 жыл бұрын
добрый комментарий добрый комментарий добрый комментарий
@t0digital
@t0digital 4 жыл бұрын
Хахаах, спасибооо!
@Uni-Coder
@Uni-Coder 4 жыл бұрын
Письмо от хейтера (шутка, уважаю твой канал). Внезапно, в Rust лучше реализованы принципы Python, чем в самом Python: и принцип "явное лучше неявного", и принцип "EAFP", а в качестве бонуса ещё и статическая типизация и всё это делается без исключений. value = some_hashmap.get("key")? // Передача ошибки выше по стеку value = some_hashmap.get("key").unwrap(); // Ленивый вылет из программы value = some_hashmap.get("key").expect("Нет тут такого ключа"); // Чуть более сложный вылет Всё в одну строку. Ну, и говорить о преимуществе одной константной операции вместо двух... На python?.. Гм... Ну, такое
@t0digital
@t0digital 4 жыл бұрын
До ржавчины пока руки не дошли, но на досуге хочу познакомиться. Хотя блин кого я обманываю, какой нахрен досуг))
@КириллКириллович
@КириллКириллович 4 жыл бұрын
Но исключения - это очень дорогое удовольствие, их стоит-таки избегать, если это возможно.
@dmytrokorbanytskyi1586
@dmytrokorbanytskyi1586 4 жыл бұрын
в чем дороговизна, поясните плз.
@ИванОмельченко-б7в
@ИванОмельченко-б7в 4 жыл бұрын
нет никакой дороговизны, по крайней мере в случае CPython. stackoverflow.com/questions/2522005/cost-of-exception-handlers-in-python docs.python.org/3/faq/design.html#how-fast-are-exceptions
@dmytrokorbanytskyi1586
@dmytrokorbanytskyi1586 4 жыл бұрын
@@ИванОмельченко-б7в абсолютно согласен с вами. На первое место в питоне надо ставить читабельность и простоту кода.
@spappinventor2850
@spappinventor2850 4 жыл бұрын
А почему нет блока else, он нужен чтобы сообщить что ключа нет! )
@Oleksii_Leshchenko
@Oleksii_Leshchenko 4 жыл бұрын
А че) очень полезно)
@redologs
@redologs 4 жыл бұрын
А я думал, что try/except как раз для того, чтобы минимизировать ветвления и обработчики исключений, оставив один обработчик по умолчанию на самом верхнем уровне.
@weefix3108
@weefix3108 4 жыл бұрын
Знаю, вопрос не по теме, и скорее всего, вы даже не ответите на него. Я знаю что вы используете MacOS также стандартный терминал, мне очень понравился шрифт с терминала, поискал узнал что стандартный шрифт в Терминале MacOS это Lucida Grande, погуглил, посмотрел, похоже но не то, последний способ был написать вам, больно уж нравиться мне шрифт в вашем Терминале. Заранее Спасибо.
@t0digital
@t0digital 4 жыл бұрын
У меня шрифт Monaco в терминале
@weefix3108
@weefix3108 4 жыл бұрын
@@t0digital Спасибо вам большое
@ФермаКактусов
@ФермаКактусов 4 жыл бұрын
не знаю что написать но напишу)
@RomaxSinergy
@RomaxSinergy 4 жыл бұрын
Денис Борисов от software enginering
@t0digital
@t0digital 4 жыл бұрын
почему?
@kenybond6564
@kenybond6564 4 жыл бұрын
В 1с использование такой конструкции считается плохим тоном. Значит программист плохо учел возможные варианты, раз у него что-то может вызвать исключение.
@СергейПресняков-о4р
@СергейПресняков-о4р 4 жыл бұрын
1C сам по себе считается плохим тоном. P.S. Ладно, шутка
@kenybond6564
@kenybond6564 4 жыл бұрын
@@СергейПресняков-о4р давай напишем систему лучше) Аналогов я не нашел, ниша свободна. Не шутка)
@rob11nzon
@rob11nzon 4 жыл бұрын
а может лучше написать так ? if 'key' not in some_dick: continue или return или rise Exception print(some_dict['key'])
@TheNechXD
@TheNechXD 4 жыл бұрын
В случае со словарем проще воспользоваться методом get: dict_instance.get("key", "default value")
@АнжелкаИванова-ь6й
@АнжелкаИванова-ь6й 4 жыл бұрын
​@@TheNechXD С одной стороны да, но ведь работа с дефолтным значением концептуально отличается от работы с запрашиваемым значением. Поэтому, скорее всего, дальше все равно придется ветвить "программный поток" и обрабатывать дефолтное значение отдельно. Хотя, признаю, иногда полезно использовать дефолт, например, если дальше по программе оно уже обрабатывается
@rob11nzon
@rob11nzon 4 жыл бұрын
@@TheNechXD а если мне не нужно дефолтное значение? Смысл вопроса в действиях если ключа нет, а не в том, что мы получаем.
@TheNechXD
@TheNechXD 4 жыл бұрын
@@rob11nzon При вашем подходе вы также 2 раза проверяете наличие ключа в словаре. Читабельней ли это выглядит? Спорно. Неплохое решение предлагает Java с встроенными в Optional монадами. Ваш подход решает, например, проблему вложенных if'ов (если бы они были и вы сразу бы обрезали ветвь, классический пример), но концептуально не решает поставленную задачу лучше.
@rob11nzon
@rob11nzon 4 жыл бұрын
@@TheNechXD не понял почему 2 раза проверяю. С Java не знаком, но знаком с C#, там есть что-то подобное (Optional монады)?
@ashur1k
@ashur1k 2 жыл бұрын
Как можно сравнивать разный функционал? Если вместо каждого if использовать try except то не только сложно будет читать, но и выполняться такая программа будет намного дольше.
@t0digital
@t0digital 2 жыл бұрын
Так и не предлагается везде заменить if на try/except
Из какого города смотришь? 😃
00:34
МЯТНАЯ ФАНТА
Рет қаралды 1,6 МЛН
ROSÉ & Bruno Mars - APT. (Official Music Video)
02:54
ROSÉ
Рет қаралды 330 МЛН
Which team will win? Team Joy or Team Gumball?! 🤔
00:29
BigSchool
Рет қаралды 15 МЛН
Django Middleware - что это, зачем и как использовать
14:48
Диджитализируй!
Рет қаралды 48 М.
Всё об исключениях и работе с ними в Python
30:34
Диджитализируй!
Рет қаралды 51 М.
Из какого города смотришь? 😃
00:34
МЯТНАЯ ФАНТА
Рет қаралды 1,6 МЛН