170 похожих чатов

Скажите плиз это норм практика делать проверку если не ноне

и не значения по индексу с array не равно 0 или все же нужно делать вложенный «if» ?

a = [1, 0, 1, 2]
a = None

my_index = 0
if type(a) == list and a[my_index] !=0:
pass

18 ответов

14 просмотров

1) isinstance() 2) try: if a[my_index] except: pass

Vladyslav- Автор вопроса

я задал немного другой вопрос) это нормально в одно условие делать проверку на тип и на проверку числа из индекса или делать вложенное условие?

А кроме списка и None возможны другие варианты и конкретный тип важен? Если да, то странно, если нет, то if a is not None and a[my_index] != 0:

Vladyslav- Автор вопроса
Vladyslav
я задал немного другой вопрос) это нормально в одн...

В условии может быть сколько угодно условий. Если важна читаемость(обычно она важна) то отталкиваетесь от того, что лучше читается. Если надо проверить тип - используйте isinstance Дзен питона говорит, лучше извиниться, чем спрашивать --- И да, на None проверяют через is

evle
А кроме списка и None возможны другие варианты и к...

А зачем в этом случае вообще проверять на None? Можно просто if a

Wanna_Phonila
В условии может быть сколько угодно условий. Есл...

Дзен питона такого не говорит, но да, часто это более удачная стратегия.

Елена Максимова
А зачем в этом случае вообще проверять на None? Мо...

Зависит от задачи. Возможно, что достаточно. Под if a попадают кроме None и другие значения, которые может хотеться не пропускать.

Vladyslav- Автор вопроса
evle
Зависит от задачи. Возможно, что достаточно. Под i...

может быть только None или лист, другое быть не может

evle
Зависит от задачи. Возможно, что достаточно. Под i...

Тут человек сказал, что у него либо лист либо нан)

Vladyslav
может быть только None или лист, другое быть не мо...

но лист может быть пустым, поэтому if a адекватнее. заранее условие не проверяется, если первое False второе он не вычисляет. когда два c and кажется читаемее чем с 2мя ифами или траем

Vladyslav- Автор вопроса
Vladyslav
может быть только None или лист, другое быть не мо...

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

evle
a = [] if a: # This won't run

ну да. там же вторым условием индекс проверяется, поэтому для таких случаев is a вроде адекватнее правда

Сергей
но лист может быть пустым, поэтому if a адекватнее...

Выбор зависит от того, что должно произойти. если список пустой. Если это ошибка, то упасть с IndexError правильнее, чем молча пропустить.

evle
Дзен питона такого не говорит, но да, часто это бо...

Ну, не в дзене, но где-то в доке точно было про EAFP

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта