• включение (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 оценит его значение и вернет булев результат. Поэтому, если вы введете следующее: