Простой Python. Современный стиль программирования (Любанович) - страница 53

• включение (in …).

Эти операторы возвращают булевы значения True или False. Взглянем на то, как они работают, но сначала присвоим значение переменной x:

>>>> x = 7

Теперь выполним несколько проверок:

>>>> x == 5

>False

>>>> x == 7

>True

>>>> 5 < x

>True

>>>> x < 10

>True

Обратите внимание на то, что для проверки на равенство используются два знака «равно» (==); помните, что один знак «равно» применяется для присваивания значения переменной.

Если вам нужно выполнить несколько сравнений одновременно, можете использовать булевы операторы and, or и not, чтобы определить итоговый двоичный результат.

Булевы операторы имеют более низкий приоритет, нежели фрагменты кода, которые они сравнивают. Это значит, что сначала высчитывается результат фрагментов, а затем они сравниваются. В данном примере из-за того, что мы устанавливаем значение х равным 7, проверка 5 < х возвращает значение True и проверка х < 10 также возвращает True, поэтому наше выражение преобразуется в True and True:

>>>> 5 < x and x < 10

>True

Как указывается в подразделе «Приоритет операций» раздела «Числа» главы 2, самый простой способ избежать путаницы — использовать круглые скобки:

>>>> (5 < x) and (x < 10)

>True

Рассмотрим некоторые другие проверки:

>>>> 5 < x or x < 10

>True

>>>> 5 < x and x > 10

>False

>>>> 5 < x and not x > 10

>True

Если вы используете оператор and для того, чтобы объединить несколько проверок, Python позволит вам сделать следующее:

>>>> 5 < x < 10

>True

Это выражение аналогично проверкам 5 < x и x < 10. Вы также можете писать более длинные сравнения:

>>>> 5 < x < 10 < 999

>True

Что есть истина? Что, если элемент, который мы проверяем, не является булевым? Чем Python считает True и False?

Значение false не обязательно явно означает False. Например, к False приравниваются все следующие значения:

• булева переменная False;

• значение None;

• целое число 0;

• число с плавающей точкой 0.0;

• пустая строка (' ');

• пустой список ([]);

• пустой кортеж (());

• пустой словарь ({});

• пустое множество (set()).

Все остальные значения приравниваются к True. Программы, написанные на Python, используют это определение истинности (или, как в данном случае, ложности), чтобы выполнять проверку на пустоту структуры данных наряду с проверкой на равенство непосредственно значению False:

>>>> some_list = []

>>>> if some_list:

>…·····print("There's something in here")

>… else:

>…·····print("Hey, it's empty!")

>…

>Hey, it's empty!

Если вы выполняете проверку для выражения, а не для простой переменной, Python оценит его значение и вернет булев результат. Поэтому, если вы введете следующее: