bool()在Python中的实际应用是什么?

时间:2014-07-21 14:48:19

标签: python python-2.7 boolean

在日常编码中使用它?我正在使用this tutorial学习Python。我所指的是here(页面中间),但我无法得到它。我理解使用True和False的原则,但是在编写代码时我实际上在实践中实际使用bool()函数时没有得到。如果您在代码中提供bool()的日常实用示例,它将对我有所帮助。

4 个答案:

答案 0 :(得分:16)

它允许您将任何Python值转换为布尔值。

有时您希望存储TrueFalse,具体取决于另一个Python对象。而不是:

if python_object:
    result = True
else:
    result = False

你只是这样做:

result = bool(python_object)

如何将 Python对象转换为布尔值,所有这些都取决于它们的truth value。一般来说,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

答案 1 :(得分:4)

要理解bool()的作用,我们首先要了解布尔值的概念。

在大多数编程语言中,布尔变量由二进制的0或1表示。 A 1表示“True”,0表示“False”

在某些方面,数字1与布尔值True不同。例如,请使用以下代码:

>>> 1 is True
False

请注意,根据Python,1与True不同。但是:

>>> bool(1) is True
True

当我们在这里使用bool()函数时,我们将1转换为布尔值。这种转换称为“铸造”。将1转换为布尔值会返回值“True”。

大多数对象都可以强制转换为布尔值。根据我的经验,除非它是0,None,False或空迭代(例如:“”,[]或{}),否则您应该期望每个标准对象都计算为True。举个例子:

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

最后,布尔值打印为“True”或“False”

>>> print bool(1)
True

答案 2 :(得分:3)

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 :(得分:-1)

将值转换为布尔值。