Логический тип данных
upd:
45.6K
4

Логический тип данных (bool) в Python

  • Преобразования
  • Другие типы → bool
  • bool → str
  • bool → int
  • Логический тип и операторы

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

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

  • True — истина;
  • False — ложь.

True и False пишутся с большой буквы. Если написать с маленькой true или false, интерпретатор выдаст ошибку: 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 не выполняет неявное приведение типов (как например JavaScript), так как неявное приведение может маскировать логические ошибки.

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

>>> 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:
Операторы и выражения в Python
13
😭
12
😕
5
😃
48
😍
Комментарии (4)
Сначала популярные
Сначала новые
По очереди
Павел
1 год 4 месяца назад

Приведенные примеры по сути не разбираются, не объясняется каждая строчка. Поверхностное объяснение, для галочки, типа тему же затронули ...

10
ответить
Разработчик
1 год 3 месяца назад

Для собеса не хватит. Затронуты только верха. Не разобран тип на более низких уровнях.

3
ответить
1 ответ
Ivarus
5 мес. 19 дней назад
def test(): return 0 print(test) # >>> <function test at 0x7f426d6b1800> print(test()) # >>> 0 print(bool(test)) # >>> True print(bool(test())) # >>> False
0
ответить
Может понравиться
Числа в Python и операции над ними
Основы
upd:
Числа в Python (FAQ)