bool
Функция bool() преобразует значение в логическое (True или False) в соответствии с правилами приведения типов в Python.
Синтаксис
bool([x])
Аргументы
- x (необязательный):
- Что означает: Значение, которое нужно преобразовать в логическое.
- Возможные значения: Любой объект или значение в Python.
Возвращаемое значение
Возвращает True, если аргумент x является истинным (не None, не False, не 0 и т. д.). Возвращает False, если аргумент x является ложным.
Если аргумент не указан, функция возвращает False.
Примеры использования
print(bool(1)) # Вывод: True
print(bool(0)) # Вывод: False
print(bool("Hello")) # Вывод: True
print(bool("")) # Вывод: False
print(bool(True)) # Вывод: True
print(bool([])) # Вывод: False (пустой список считается ложным)
print(bool([1, 2, 3])) # Вывод: True (непустой список считается истинным)
Эквивалентный код
def pyplanet_bool(x=None):
if x:
return True
return False
Частые ошибки
Ожидание логического значения от сложного объекта:
print(bool([0])) # Вывод: True
Даже если объект содержит ложное значение, сам объект (например, список) считается истинным, если он не пуст.
Как исправить: Проверьте элементы объекта явно:
print(all(x == 0 for x in [0])) # Проверяем содержимое списка.
Неявное преобразование типов:
value = bool("False") print(value) # Вывод: True (непустая строка — истинная)
Как исправить: Обратите внимание на значения, передаваемые в bool.
Часто задаваемые вопросы
Что произойдет, если аргумент не передан? Функция вернет False.
Какие значения считаются ложными? Ложными считаются:
- None
- False
- Числа: 0, 0.0, 0j
- Пустые контейнеры: [], (), {}, set()
- Пустые строки: ""
- Пользовательские объекты с методом __bool__, возвращающим False, или с методом __len__, возвращающим 0.
Можно ли использовать bool() для проверки, пустой ли контейнер? Да, например:
items = [] if not bool(items): print("Контейнер пуст.")
Однако более предпочтительна более короткая форма записи:
if not items: print("Контейнер пуст.")