Треки
/
Python
Python
/
Салабус
/
Булеві значення
Бу

Булеві значення у Python

70 вправ

Про концепцію Булеві значення

У Python значення правди й неправди мають тип bool, який є підкласом int. У цьому типі лише два булеві значення (англ. Boolean): True і False. Ці значення можна присвоїти змінній і поєднувати за допомогою булевих операторів (and, or, not):

>>> true_variable = True and True
>>> false_variable = True and False

>>> true_variable = False or True
>>> false_variable = False or False

>>> true_variable = not False
>>> false_variable = not True

Булеві оператори використовують скорочене обчислення: вираз праворуч від оператора обчислюється лише тоді, коли це потрібно.

Кожен з операторів має свій пріоритет: not обчислюється перед and та or. Дужки дають змогу обчислити одну частину виразу перед іншими:

>>> not True and True
False

>>> not (True and False)
True

Усі boolean operators мають нижчий пріоритет, ніж comparison operators у Python, як-от ==, >, <, is та is not.

Приведення типів і правдивість

Функція bool (bool()) перетворює будь-який обʼєкт на булеве значення. Типово всі обʼєкти повертають True, якщо для них не визначено повертати False.

Кілька built-ins за визначенням завжди вважаються False:

  • константи None і False
  • нуль будь-якого числового типу (int, float, complex, decimal або fraction)
  • порожні послідовності та колекції (str, list, set, tuple, dict, range(0))
>>> bool(None)
False

>>> bool(1)
True

>>> bool(0)
False

>>> bool([1,2,3])
True

>>> bool([])
False

>>> bool({"Pig" : 1, "Cow": 3})
True

>>> bool({})
False

Коли обʼєкт використовується в булевому контексті, він прозоро оцінюється як правдивий чи неправдивий за допомогою bool():

>>> a = "is this true?"
>>> b = []

# This will print "True", as a non-empty string is considered a "truthy" value
>>> if a:
...  print("True")

# This will print "False", as an empty list is considered a "falsey" value
>>> if not b:
...   print("False")

Класи можуть визначати, як їх оцінюють у ситуаціях правдивості, якщо вони перевизначають і реалізують метод __bool__() та/або метод __len__().

Як булеві значення працюють під капотом

Тип bool реалізовано як підтип int. Це означає, що True чисельно дорівнює 1, а False чисельно дорівнює 0. Це видно, коли порівнювати їх за допомогою оператора рівності:

>>> 1 == True
True

>>> 0 == False
True

Однак bools усе ще відрізняються від ints, що видно при порівнянні їх за допомогою оператора ідентичності is:

>>> 1 is True
False

>>> 0 is False
False

Примітка: у Python >= 3.8 використання літерала (як-от 1, '', [] чи {}) ліворуч від is спричинить попередження.

Порівнювати булеву змінну з True або False за допомогою оператора рівності вважається антипатерном у Python. Натомість варто використовувати оператор ідентичності is:


>>> flag = True

# Not "Pythonic"
>>> if flag == True:
...    print("This works, but it's not considered Pythonic.")

# A better way
>>> if flag:
...    print("Pythonistas prefer this pattern as more Pythonic.")
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці

Вивчити концепцію Булеві значення

Практика заблокована

Розблокуйте ще 2 вправи, щоб практикувати концепцію Булеві значення