Ласкаво просимо
У цій статті ви дізнаєтесь:
- Що таке неправдиві та хибні цінності.
- Що робить цінність неправдивою чи хибною.
- Як використовувати
bool()
функцію, щоб визначити, чи є значення істинним чи хибним. - Як зробити об’єкти з визначених користувачем класів неправдивими чи хибними за допомогою спеціального методу
__bool __
.
Давайте почнемо! ✨
Val Цінність істини проти цінності істинної та хибної
Дозвольте мені познайомити вас з цими поняттями, порівнюючи їх зі значеннями , True
і False
що ми , як правило , працюють з.
Вирази з операндами та операторами обчислюють або True
або, False
і вони можуть бути використані в умові if
або, while
щоб визначити, чи повинен працювати код коду.
Ось приклад:
# Expression 5 >> if 5 < 3: print("True") else: print("False") # Output False
У цьому прикладі все працює так, як ми очікували, оскільки ми використали вираз із двома операндами та оператором 5 < 3
.
Але що, на вашу думку, станеться, якщо ми спробуємо запустити цей код?
>>> a = 5 >>> if a: print(a)
Зверніть увагу, що зараз ми не маємо типового виразу поруч із if
ключовим словом, а лише змінну:

Дивно, але результат:
5
Якщо ми змінимо значення a
на нуль, ось так:
>>> a = 0 >>> if a: print(a)
Виходу немає.
Я впевнений, що ви, мабуть, запитуєте це зараз: що змусило код успішно працювати?
Змінна a
не є типовим виразом. Він не має операторів та операндів, то чому він оцінив значення True
або False
залежно від його значення?
Відповідь лежить на концепції цінностей Істини та Фальсі, які самі по собі не є цінностями істини, але вони оцінюють або до, True
або False
.
Val Істинні та хибні цінності
У Python окремі значення можуть мати значення True
або False
. Вони не обов’язково повинні бути частиною більшого виразу, щоб оцінити значення істини, оскільки вони вже мають таке, яке визначено правилами мови Python.
Основні правила:
False
Розглядаються значення, які оцінюються якFalsy
.True
Розглядаються значення, які оцінюються якTruthy
.
Відповідно до документації Python:
Будь-який об'єкт може бути перевірений на істинність, на використання вif
або while
стані або як операнд булевих операцій, наведених нижче (і, або, ні).🔹 Логічний контекст
Коли ми використовуємо значення як частину більшого виразу або як if
або while
умову, ми використовуємо його в логічному контексті .
Ви можете думати про логічний контекст як про певну "частину" вашого коду, яка вимагає, щоб значення було True
або False
має сенс.
Наприклад, (див. Нижче) умова після if
ключового слова або після того, як while
ключове слово має оцінюватись до True
або False
:

💡 Порада: Значення можна зберігати у змінній. Ми можемо записати ім’я змінної після ключового слова if
або while
замість самого значення. Це забезпечить однакову функціональність.
Тепер, коли ви знаєте, що таке неправдиві та хибні цінності та як вони працюють у логічному контексті, давайте подивимось декілька реальних прикладів істинних та хибних значень.
Неправдиві цінності
Послідовності та колекції:
- Порожні списки
[]
- Порожні кортежі
()
- Порожні словники
{}
- Порожні набори
set()
- Порожні рядки
""
- Порожні діапазони
range(0)
Числа
- Нуль будь-якого числового типу.
- Ціле число:
0
- Поплавок:
0.0
- Комплекс:
0j
Константи
None
False
Неправдиві значення були причиною того, що в нашому початковому прикладі не було результату, коли значення a
дорівнювало нулю.
Значення 0
хибне, тому if
умова буде, False
а умовна не буде запущена в цьому прикладі:
>>> a = 0 >>> if a: print(a) # No Output
🔹 Неправдиві цінності
Відповідно до документації Python:
За замовчуванням об’єкт вважається істинним .Істинні значення включають:
- Непорожні послідовності або колекції (списки, кортежі, рядки, словники, набори).
- Числові значення, які не дорівнюють нулю.
True
Ось чому a
в нашому початковому прикладі було надруковано значення, оскільки його значення було 5 (істинне значення):
>>> a = 5 >>> if a: print(a) # Output 5
🔸 Вбудована функція bool ()
Ви можете перевірити, чи є значення неправдивим чи хибним, за допомогою вбудованої bool()
функції.
Відповідно до документації Python, ця функція:
Повертає булеве значення, тобто одне зTrue
або False
. x (аргумент) перетворюється за допомогою стандартної процедури перевірки істинності.
Вам потрібно лише передати значення як аргумент, наприклад:
>>> bool(5) True >>> bool(0) False >>> bool([]) False >>> bool({5, 5}) True >>> bool(-5) True >>> bool(0.0) False >>> bool(None) False >>> bool(1) True >>> bool(range(0)) False >>> bool(set()) False >>> bool({5, 6, 2, 5}) True
💡 Порада: Ви також можете передати змінну як аргумент, щоб перевірити, чи є її значення хибним чи хибним.
🔹 Реальні приклади
One of the advantages of using truthy and falsy values is that they can help you make your code more concise and readable. Here we have two real examples.
Example:
We have this function print_even()
that takes as an argument a list or tuple that contains numbers and only prints the values that are even. If the argument is empty, it prints a descriptive message:
def print_even(data): if len(data) > 0: for value in data: if value % 2 == 0: print(value) else: print("The argument cannot be empty")
Notice this line:
if len(data) > 0:
We can make the condition much more concise with truthy and falsy values:
if data:
If the list is empty, data
will evaluate to False
. If it's not empty, it will evaluate to True
. We get the same functionality with more concise code.
This would be our final function:
def print_even(data): if data: for value in data: if value % 2 == 0: print(value) else: print("The argument cannot be empty")
Example:
We could also use truthy and falsy values to raise an exception (error) when the argument passed to a function is not valid.
>>> def print_even(data): if not data: raise ValueError("The argument data cannot be empty") for value in data: if value % 2 == 0: print(value)
In this case, by using not data
as the condition of the if
statement, we are getting the opposite truth value of data
for the if
condition.
Let's analyze not data
in more detail:
If data
is empty:
- It will be a falsy value, so
data
will evaluate toFalse
. not data
will be equivalent tonot False
, which isTrue
.- The condition will be
True
. - The exception will be raised.
If data
is not empty:
- It will be a truthy value, so it will evaluate to
True
. not data
will be equivalent tonot True
, which isFalse
.- The condition will be
False
. - The exception will not be raised.
🔸 Making Custom Objects Truthy and Falsy Values
Якщо ви знайомі з класами та об'єктно-орієнтованим програмуванням, ви можете додати спеціальний метод до своїх класів, щоб ваші об'єкти діяли як істинні та хибні значення.
__bool __ ()
За допомогою спеціального методу __bool__()
ви можете встановити "індивідуальну" умову, яка визначатиме, коли об'єкт вашого класу буде оцінюватися як True
або False
.
Відповідно до документації Python:
За замовчуванням об'єкт вважається істинним, якщо його клас не визначає або__bool__()
метод, який повертає, False
або __len__()
метод, який повертає нуль, коли він викликається з об'єктом.Наприклад, якщо ми маємо цей дуже простий клас:
>>> class Account: def __init__(self, balance): self.balance = balance
Ви бачите, що ніяких спеціальних методів не визначено, тому всі об’єкти, які ви створюєте з цього класу, завжди оцінюватимуться як True
:
>>> account1 = Account(500) >>> bool(account1) True >>> account2 = Account(0) >>> bool(account2) True
We can customize this behavior by adding the special method __bool__()
:
>>> class Account: def __init__(self, balance): self.balance = balance def __bool__(self): return self.balance > 0
Now, if the account balance is greater than zero, the object will evaluate to True
. Otherwise, if the account balance is zero, the object will evaluate to False
.
>>> account1 = Account(500) >>> bool(account1) True >>> account2 = Account(0) >>> bool(account2) False
💡 Tip: If __bool__()
is not defined in the class but the __len__()
method is, the value returned by this method will determine if the object is truthy or falsy.
🔹 In Summary
- Truthy values are values that evaluate to
True
in a boolean context. - Falsy values are values that evaluate to
False
in a boolean context. - Falsy values include empty sequences (lists, tuples, strings, dictionaries, sets), zero in every numeric type,
None
, andFalse
. - Truthy values include non-empty sequences, numbers (except
0
in every numeric type), and basically every value that is not falsy. - They can be used to make your code more concise.
I really hope you liked my article and found it helpful. Now you can work with truthy and falsy values in your Python projects. Check out my online courses. Follow me on Twitter. ⭐️