Логический тип данных

Логический тип данных (bool) (или булевый тип) это примитивный тип данных, который принимает 2 значения – истина или ложь.

В Python имеется самостоятельный логический тип bool, с двумя предопределенными значениями:

  • True - истина
  • False - ложь

True и False пишутся с большой буквы. Если написать с маленькой true, интерпретатор выдаст ошибку: NameError: name 'true' is not defined

True и False являются экземплярами класса bool который в свою очередь является подклассом int Поэтому True и False в Python ведут себя как числа 1 и 0. Отличие только в том, как они выводятся на экран.

>>> True True >>> type(True) <class 'bool'> >>> isinstance(True, int) True >>> True == 1 True >>> True + 4 # True это число 1 5 >>> 5 * False # False это число 0 0
boolobject.c содержит реализацию булевого типа в CPython

Часто логический тип данных используется в ветвлениях if . Если результат выполнения True – выполняется соответствующая ветка.

>>> a = 10 >>> if a < 0: print("меньше 0") elif a == 0: print("равно 0") else: print("больше 0") больше 0

Цикл while работает аналогичным образом – цикл выполняется до тех пор, пока логическое выражение True

>>> count = 5 >>> while count: print("count = {}".format(count)) count -= 1 count = 5 count = 4 count = 3 count = 2 count = 1

Преобразования

Другие типы к bool

В Python для приведения других типов данных к булевому типу, используется функция bool() Работает эта функция по следующему соглашению:

👉 Функция bool() вернет True

  • непустая строка (в том числе если это один или несколько пробелов)
  • ненулевое число (в том числе меньшее единицы, например -5)
  • непустой список/кортеж (даже если он содержит один пустой элемент, например пустой кортеж)
  • функция
>>> bool("python") True >>> bool(" ") True >>> bool(1) True >>> bool(-5) True >>> bool([1,2,3]) True >>> bool((0,1)) True >>> bool([()]) True >>> def test(): return "test" >>> bool(test) True

👉 Функция bool() вернет False

  • пустая строка
  • нулевое число
  • пустой список/кортеж
>>> bool("") False >>> bool(0) False >>> bool([]) False >>> bool(()) False

bool к str

Бывают ситуации, когда нам необходимо получить True и False в строковом представлении. Если выполнить код ниже, он вызовет ошибку:

print("answer is " + True) TypeError: can only concatenate str (not "bool") to str

Ошибка произошла потому, что Python не выполняет неявное приведение типов (как например JavaSctipt), так как неявное приведение может маскировать логические ошибки.

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

>>> answer = True >>> print("my answer is " + str(True)) my answer is True

или используйте форматирование строки:

print("my answer is {}".format(True))

bool к int

Встроенная функция int() преобразует логическое значение в 1 или 0.

>>> int(True) 1 >>> int(False) 0

Аналогичного результата можно добиться умножением логического типа на единицу:

>>> True * 1 1 >>> False * 1 0

Логический тип и операторы

Операторы – это своего рода функционал, представленный в виде символов (например + ==) или зарезервированных слов (например and not).

В Python используется несколько типов операторов. Мы же рассмотрим только операторы сравнения и логические операторы, т.к. результатом их выполнения являются True или False

Операторы сравнения:

>>> 1 == 5 False >>> 1 != 5 True >>> 1 > 5 False >>> 1 < 5 True >>> 1 >= 5 False >>> 1 <= 5 True

Логические операторы:

>>> (1 + 1 == 2) or (2 * 2 == 5) True >>> (1 + 1 == 2) and (2 * 2 == 5) False >>> (1 + 1 == 2) and not (2 * 2 == 5) True

Более подробно про операторы можно прочитать в нашей предыдущей статье – "Операторы и выражения в Python".

😭
😕
😃
😍