Каково практическое применение bool() в Python?

Когда он используется в повседневном кодировании? Я изучаю Python, используя этот учебник. На что я ссылаюсь, описывается здесь (в середине страницы), но я не могу его получить. Я понимаю принципы использования True и False, но я не понимаю, когда (или действительно) мы фактически используем функцию bool() на практике при написании нашего кода. Это помогло бы мне, если бы вы представили повседневный практический пример bool() в коде.

Ответ 1

Он позволяет конвертировать любое значение Python в логическое значение.

Иногда вы хотите сохранить либо True, либо False в зависимости от другого объекта Python. Вместо:

if python_object:
    result = True
else:
    result = False

просто:

result = bool(python_object)

Как объекты Python преобразуются в логическое значение, все зависит от их значение истины. Вообще говоря, None, числовые 0 и пустые контейнеры (пустой список, словарь, набор, кортеж, строка и т.д.) - все False, остальное - True.

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

class Tree(object):
    def __init__(self, children):
        self.children

    def has_children(self):
        return bool(self.children)

Теперь Tree().has_children() вернет True, когда self.children не пуст, False в противном случае.

Ответ 2

bool раскрывает тот факт, что Python допускает логические преобразования к вещам, которые вы обычно не считаете True или False.

Примером этого являются списки. Если len(my_list) будет больше 0, он также рассматривает это как True. Если он не имеет длины - если len() вернет 0 - это False. Это позволяет писать код следующим образом:

def check_list_for_values(my_list, value):
    return [x for x in my_list if x == value]

your_list = [5, 6, 7, 8, 9, 5, 3, 4, 8]
if check_list_for_values(3, your_list):
    print "got a match"

Если check_list_for_values возвращает список с длиной больше 0, он печатает "получил соответствие", потому что он оценивает значение True. Если длина списка не будет возвращена...

your_list = [5, 6, 7, 8, 9, 5, 3, 4, 8]
if check_list_for_values('elephant', your_list):
    print "got a match"

Тогда ничего не будет напечатано, потому что оно оценивается как False.

Ответ 3

Чтобы понять, что нужно для bool(), нужно сначала понять концепцию булева.

Логическая переменная представлена ​​либо 0, либо 1 в двоичном формате на большинстве языков программирования. A 1 представляет "True" , а 0 означает "False"

Число 1 отличается от булевского значения True в некоторых отношениях. Например, введите следующий код:

>>> 1 is True
False

Обратите внимание, что 1 отличается от True в соответствии с Python. Однако:

>>> bool(1) is True
True

Когда мы используем здесь функцию bool(), мы конвертируем 1 в логическое. Это преобразование называется "литье". Кастинг 1 в boolean возвращает значение "True" .

Большинство объектов могут быть добавлены к логическому значению. По моему опыту, вы должны ожидать, что каждый стандартный объект будет оценивать True, если он не равен 0, None, False или пустой итерабельный (например: "", [] или {}). Итак, пример:

>>> bool({})
False
>>> bool({"":False})
True
>>> bool(None)
False
>>> bool("")
False
>>> bool("hello")
True
>>> bool(500)
True
>>> bool(0)
False
>>> bool(False)
False

Наконец, boolean печатает как "True" или "False"

>>> print bool(1)
True

Ответ 4

Преобразует значение в логическое.