Содржина на објавата
Признавайтесь, кто так пишет? if not value in array: ... По задумке, мы пытаемся проверить, отсутствует ли значение value в списке array. Звучит логично, но! В данном случае оператор not и оператор in не связаны. То есть всё, что делает оператор not, это инвертирование значения, идущего после него, причём результатом будет bool. А после мы проверяем, есть ли этот bool в списке array??? Неожиданный поворот! Выглядеть это может так: if (not value) in array: ... Но стоп, почему же тогда никаких проблем с этой записью нет и ОНО РАБОТАЕТ в таком виде!? Дело в том, что я намеренно перечислил операторы в порядке их написания (чтобы страшней было). Хотя, на самом деле, оператор inимеет бОльший приоритет. В этом примере мы сначала проверяем наличие элемента в списке (вместо проверки "отсутствия") а потом инвертируем результат. if not (value in array): ... Да, получаем ровно тот же результат (считай повезло), но в два действия. Специально для таких случаев есть оператор not in, то есть более "питонично" писать так: if value not in array: ... Это будет выполняться в одно действие, так как оператор один (несмотря не мизерные затраты времени оператора not). Понимайте то, что кодите! #tricks