Bogdan
Try except как по мне выглядит громоздко) с иф елсе код лаконичней
ещё считается что try-catch (except) работает медленнее
Mikhail
Azamat
Елсе - тоже часто называют антипаттерном
Тут все зависит все таки от кода.
Bogdan
Елсе - тоже часто называют антипаттерном
вместо else просто другой вариант развития событий за блоком ифа?
Иаков
Вы говорите тут про трай кэтчи, а вы используете enum'ы? Чтоб потом switch case был читаемый?
Mikhail
вместо else просто другой вариант развития событий за блоком ифа?
if с ретурном, например, да. Тогда смысла в else нет никакого.
Anton
А в каком месте вы хотите ловить ошибку и какую?
я больше не ошибку хочу, а принт что "такой информации нет"
Шаман Каган
не думаю что сработает - там какойнить кастомный плеер со стриминговым вещанием
Bogdan
if с ретурном, например, да. Тогда смысла в else нет никакого.
ну а если условие 2-этажное или 3-этажное
Bogdan
то-есть if else if else или if else if
Mikhail
Тут все зависит все таки от кода.
Да практически всегда можно переписать if-else на if. Я по молодости и глупости на код-ревью гнобил за else.
Mikhail
ну а если условие 2-этажное или 3-этажное
Тогда ты что-то сделал не так и твой код - говно.
Иаков
я больше не ошибку хочу, а принт что "такой информации нет"
Ну, в таком случае нужно проверить. Инфу вы где ищете? В списке или у вас другое что?
Bogdan
то-есть if внутри элса
Mikhail
ну я очень часто вижу if else if
Это не отменяет постулата выше. ТруЪ пацаны используют максимум один уровень вложенности!
Igor
Try except как по мне выглядит громоздко) с иф елсе код лаконичней
Это зависит еще от языка, у каждого языка свои представления красоты и правильности
Azamat
Да практически всегда можно переписать if-else на if. Я по молодости и глупости на код-ревью гнобил за else.
Да можно без домиков, просто создать отдельную функцию, и там типо def check(): if cond1: return if cond2: return Somecode return value (или True)
Bogdan
так а если у тебя допустим если-то, а если другое-то и как тут без else обходиться
Anton
Ну, в таком случае нужно проверить. Инфу вы где ищете? В списке или у вас другое что?
у меня словарь по которому я циклом иду, если пользователь вводит число и он есть в качестве результата в ['pk'] то надо записать данные и вывести, если нет вывести " нет такой информации"
Bogdan
все разбивать на миллион функций?
Bogdan
в моей жизни ещё не было человека который бы не использовал else
Иаков
у меня словарь по которому я циклом иду, если пользователь вводит число и он есть в качестве результата в ['pk'] то надо записать данные и вывести, если нет вывести " нет такой информации"
В таком случае, когда вы пытаетесь получить значенин по условию, надо получить это значение в переменную. Проверить if'ом, если переменная пустая, то выводите сообщение об ошибке, иначе код продолжается, ну, то бишь, else не используйте, просто if
Bogdan
даже сеньоры знакомые пишут с элсом
Azamat
в моей жизни ещё не было человека который бы не использовал else
Мне наоборот не нравиться юзать елсе, использую вместо этого вариант который скинул выше, так думаю лаконичней
Иаков
в моей жизни ещё не было человека который бы не использовал else
Ну, удобно в некоторых случаях else использовать, что не так-то?
Igor
даже сеньоры знакомые пишут с элсом
Вопрос не в том как пишут сеньоры ... есть паттерн раннего выхода а применять его или нет дело личное ;)
Igor
он уменьшает цикломатическую сложность а на нее многие фапают ;)
Igor
value = dict.get("key") if value is None: raise Error Идём дальше, все ок
если ты райзиьшь ошибку зачем тогда делал гет? делай dict['key'] и ошибка сама упадет ;)
Azamat
если ты райзиьшь ошибку зачем тогда делал гет? делай dict['key'] и ошибка сама упадет ;)
Ну так человек же хочет сексуальную ошибку, а не какой то там кей ерррор и принт
Igor
тут прямым текстом понятно что происходит ;) а твой код говно
Igor
что если по ключу лежит None?
Azamat
что если по ключу лежит None?
Если h.get(key) вернёт нан?
Igor
Ну, удобно в некоторых случаях else использовать, что не так-то?
да все так ;) просто с элс логика кода теряется и типа если есть возможность его избежать то обычно код будет читабельней
Иаков
да все так ;) просто с элс логика кода теряется и типа если есть возможность его избежать то обычно код будет читабельней
Ну, согласен. Но, как мне кажется, без элса пишется, когда в результате if должен случиться return. Вполне красиво выглядит.)
Igor
Если h.get(key) вернёт нан?
ты не можеш отличить значение none потому что нет ключа или потому что в словаре лежит None условие if key in dict явно проверяет то что задумывалось а ты делаешь допущения
Igor
Да практически всегда можно переписать if-else на if. Я по молодости и глупости на код-ревью гнобил за else.
часто еще если у нас миллион ифов элсов или кейс возможно кто то потерял (или поленился создать) еще один уровень абстракции ;) и тут просто нужен полиморфизм ;)
Igor
У меня на Михаила какой то безусловный рефлекс ;) сразу на абстракции тянет ;)
Andrii
Не знаю, я обычно выделяю основное flow, и часто if условие: что-то второстепенное и return. `if: else:`обычно появляется, когда идут две равноправные ветки, что-то типа if func & (1 << arg): cofunc1 |= 1 << coarg else: cofunc2 |= 1 << coarg
Иаков
часто еще если у нас миллион ифов элсов или кейс возможно кто то потерял (или поленился создать) еще один уровень абстракции ;) и тут просто нужен полиморфизм ;)
Кстати, я тут слышал, что какая-то 3д новелла имеет просто до##я иф элифов... Там их просто колоссальное кол-во
Igor
у меня словарь по которому я циклом иду, если пользователь вводит число и он есть в качестве результата в ['pk'] то надо записать данные и вывести, если нет вывести " нет такой информации"
Ну во первых если нашел нужно сделать break или return во вторых я скажу (дети закройте уши) в питоне у for есть else ;) но это считается настоящей бэд практис ;)
Иаков
Название, правда, не помню...
Иаков
Чтооо¿?????
Andrii
У for есть else¿
Есть, причёт в не самой интуитивной семантике
Иаков
Есть, причёт в не самой интуитивной семантике
Ахах. Даже страшно представить. И где это применяется?
Andrii
Ахах. Даже страшно представить. И где это применяется?
Ну... чаще всего поиск в цикле, когда нам надо отдетьно обработать случай not found
Andrii
item = None for elem in some_list: if needed(elem): item = elem break if item is None: item = some_default some_list.append(item) # Some code
Andrii
Это переписывается на
Andrii
for elem in some_list: if needed(elem) item = elem break else: item = some_default() some_list.append(item)
Igor
У for есть else¿
это питон детка ;) else выполняется если цикл завершился нормально ;) т.е как раз тот случай если мы не нашли значение ) но даже BDFL пожалел что добавил эту херню ;)
Andrii
Чуть короче, и часто это ещё один пример goto в сишном коде. Тут типа решили сразу его узаконить конструкцией языка, но вот только конструкция неинтуитивная
Alex
Я вас умоляю... У меня двоё, но всё норм, не отказался бы от троих ещё
Тут у каждого может быть разный опыт причем зависит от многих переменных, может быть один ребенок спокойный и здоровый , с ним легко и просто а с младшим может быть совсем наоборот. И есть отцы которые участвуют мало в помощи женам с детьми по разным причинам , и есть жены которые помогают немного своим мужьям с детьми ))) Тут как карта ляжет не все от нас зависит. Это хорошо что у вас положительный опыт , но не факт что так же будет в следующий раз.
Igor
Ну, первый вариант лучше.
нет не лучше эти два куска кода делают разные вещи ;)
Иаков
нет не лучше эти два куска кода делают разные вещи ;)
Хм. То есть, последний сработает, когда цикл отработает? А первый, когда условие будет удовлетворено?
Igor
Хм. То есть, последний сработает, когда цикл отработает? А первый, когда условие будет удовлетворено?
нет первый предполагает что мы не можем искать None второй просто работает без всяких предположений
Igor
item = None for elem in some_list: if needed(elem): item = elem break if item is None: item = some_default some_list.append(item) # Some code
Сразу видно наСИльника ;) item = next(filter(needed, some_list), None) if item is None: item = some_default some_list.append(item)
Andrii
Ну, первый вариант лучше.
Да, только в нём нужно думать, что за начальное значение присвоить, если None можно вполне легально найти, и вообще больше операций...
Andrii
Сразу видно наСИльника ;) item = next(filter(needed, some_list), None) if item is None: item = some_default some_list.append(item)
Я больше иллюстративный пример ставил, там может индекс массива искаться, например, или ещё какая ерунда...
Igor
Вообще обсуждать кусок кода без контекста контрпродуктивно ;) а кога обсуждают вообще без кода типа else плохо или ранний выход хорошо ... это ни о чем
Alex
лет десять назад часто пользовался программами типа VirtualBox, хочу линукс на основной комп закинуть но привязан к винде. Кто то пользуется виртуальными пк? Какие программы для этого сейчас лучше использовать? Xочу идею установить на линукс и сопутствующий софт для программирования.