Не обязательно передавать значение в bool(). Если вы не передаете значение, bool() возвращает False. Функция Python bool() проверяет и возвращает логическое значение указанного объекта.
Что такое функция bool() в Python?
Python bool() — это встроенная функция, которая преобразует значение в логическое значение (True или False), используя стандартную процедуру проверки истинности. Логические встроенные функции пишутся с заглавной буквы: True и False.
Объект всегда будет возвращать True, если только:
- Объект пустой, например [],(), {}
- Является ложным
- Объект 0
- Объект отсутствует.
См. следующий синтаксис.
|
1 |
bool(object) |
Параметр объекта похож на строку, список, число и т. д.
См. следующий пример.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
app = False print(bool(app)) app = True print(bool(app)) app = 5 data = 10 print(bool(app==data)) app = None print(bool(app)) app =() print(bool(app)) app = {} print(bool(app)) app = 0.0 print(bool(app)) app = 'MillieBobbyBrown' print(bool(app)) |
Вывод:
|
1 2 3 4 5 6 7 8 9 10 |
➜ pyt python3 app.py False True False False False False False True ➜ pyt |
bool() возвращает следующий вывод:
- False, если значение опущено или false.
- True, если значение истинно.
См. другой пример.
|
1 2 3 4 5 6 7 8 9 |
def check(num): return(bool(num % 2 == 0)) num = 11 if(check(num)): print("Even") else: print("Odd") |
Смотрите вывод.
|
1 2 3 |
➜ pyt python3 app.py Odd ➜ pyt |
Стандартные правила Python bool()
Функция Python bool() использует стандартные правила проверки истинности для преобразования указанного объекта параметра в логическое значение.
Основные правила, используемые для возврата логического значения, следующие:
- Любое логическое значение объекта считается истинным, если оно не реализует функции __bool__() и __len__().
- Если объект не определяет функцию __bool__(), но определяет функцию __len__(), то функция __len__() используется для получения логического значения объекта. Если __len__() возвращает 0, то функция bool() вернет False, иначе True.
- Логическое значение будет False для констант None и False.
- Логическое значение будет False для нулевого значения, такого как 0, 0.0, 0j, Decimal(0) и Fraction(0, 1).
- Логическое значение будет False для пустых структур данных, таких как кортеж, словарь и коллекции, такие как «,(), [], {} и т. д.
Функция bool() с пользовательским объектом
Давайте посмотрим, что происходит с пользовательским объектом. Я не буду определять функции __bool__() и __len__() для объекта. См. следующий пример кода.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# app.py class App: number = 0 def __init__(self, i): self.number = i a = App(0) print(bool(a)) d = App(10) print(bool(d)) |
Вывод:
|
1 2 3 4 |
➜ pyt python3 app.py True True ➜ pyt |
Поскольку в приведенном выше примере ни одна из функций __bool__() и __len__() не определена, логическое значение объекта возвращается как True. Давайте добавим функцию __len__() в класс App.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
class App: number = 0 def __init__(self, i): self.number = i def __len__(self): print('len function called') if self.number > 0: return self.number else: return 0 a = App(0) print(bool(a)) d = App(11) print(bool(d)) |
См. следующий вывод.
|
1 2 3 4 5 6 |
➜ pyt python3 app.py len function called False len function called True ➜ pyt |
Понятно, что функция __len__() вызывается функцией bool(). Когда возвращается 0, функция bool() возвращает False. Функция bool() возвращает True, когда возвращается положительное целое число.
Теперь давайте добавим функцию __bool__() в класс App.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
class App: number = 0 def __init__(self, i): self.number = i def __len__(self): print('len function called') if self.number > 0: return self.number else: return 0 def __bool__(self): print('bool function called') return self.number > 0 a = App(0) print(bool(a)) d = App(11) print(bool(d)) |
Вывод:
|
1 2 3 4 5 6 |
➜ pyt python3 app.py bool function called False bool function called True ➜ pyt |
Итак, теперь ясно, что если для объекта определены обе функции __bool__() и __len__(), то функция __bool__() используется для получения логического значения объекта.
Метод bool() с числами
Давайте проверим метод bool() с числами.
|
1 2 3 4 |
print(bool(11)) print(bool(11.19)) print(bool(0xF)) print(bool(11 - 10j)) |
Вывод:
|
1 2 3 4 5 6 |
➜ pyt python3 app.py True True True True ➜ pyt |
Python bool() со строками
Давайте проверим метод bool() со строками.
|
1 2 3 |
print(bool('Krunal')) print(bool('')) print(bool("AppDividend")) |
Вывод:
|
1 2 3 4 5 |
➜ pyt python3 app.py True False True ➜ pyt |
