如何在Python中使用布尔值?


109

Python实际上包含布尔值吗?我知道您可以做到:

checker = 1
if checker:
    #dostuff

但是我相当学究,喜欢在Java中看到布尔值。例如:

Boolean checker;
if (someDecision)
{
    checker = true;
}
if(checker)
{
    //some stuff
}

Python中是否有布尔值之类的东西?我似乎在文档中找不到类似的内容。


1
请记住,创建变量时不需要声明类型。只需'checker = False'就足够了。
Dominic Bou-Samra,2009年

10
@Dominic Bou-Samra:“您不需要声明类型”吗?那不是真的。我认为您应该说“您不可能为变量声明类型”。
S.Lott

2
@ S.Lott“您可能无法声明变量的类型” ...仍然不正确,因为您可以进行类型转换some_var = int("1234")...该行显式设置some_var=>int
Kolob Canyon

Answers:


142
checker = None 

if some_decision:
    checker = True

if checker:
    # some stuff

[编辑]

有关更多信息:http : //docs.python.org/library/functions.html#bool

您的代码也可以工作,因为在需要时1会转换为True。实际上,Python很长一段时间没有布尔类型了(就像在旧的C语言中一样),并且一些程序员仍然使用整数而不是布尔值。


17
通常使用checker =(some_decision)(例如checker =(a <b))代替“ if”会更简单。
MAK

11
这个代码片段有点让人误解……您仍然需要在测试之前定义“检查器”。虽然OP较早定义了它,但在您的示例中checker = None是绝对必要的,否则您将收到UnboundLocalError
dprogramz 2014年

Python布尔值是整数。True并且False对扩展的引用int与重写对象__str____repr__
疯狂物理学家

Python布尔值不是整数;1 is not True但是1 == True
BallpointBen

@BallpointBen:从一般意义上讲,它们是整数,是该int类型的实例,如所示isinstance(True, int)
巴斯蒂安·莱昂纳德

93

布尔内建函数大写:TrueFalse

另请注意,您可以做checker = bool(some_decision)一些速记- bool只会返回TrueFalse

很高兴知道这些类定义了__nonzero____len__将要成为TrueFalse取决于这些函数的结果以供将来参考,但是实际上每个其他对象的布尔结果都是TrueNone对象,空序列和数字零除外)。


1
非常感谢您的见解。当公众投票转向了其他答案时,我授予巴斯蒂安“接受的答案”。但是,您的帮助最大!:)
费德勒2009年

23
bravado:不接受您认为最有帮助的答案有什么意义?如果再增加一个答案是完全不相关的。
tzot

2
公众投票也有这个答案。考虑更改您的投票。
Alastor Moody 2014年

12

True...而且False显然。

否则,None计算结果为False,整数0和浮点数也将计算为False 0.0(尽管我不会那样使用浮点数)。此外,空列表[],空tuplet ()和空字符串''""评估为False。

使用以下函数自己尝试bool()

bool([])
bool(['a value'])
bool('')
bool('A string')
bool(True)  # ;-)
bool(False)
bool(0)
bool(None)
bool(0.0)
bool(1)

等等..


5

布尔类型在文档中定义:http :
//docs.python.org/library/stdtypes.html#boolean-values

引用自doc:

布尔值是两个常量对象False和True。它们用于表示真值(尽管其他值也可以视为假或真)。在数字上下文中(例如,当用作算术运算符的参数时),它们的行为分别类似于整数0和1。如果可以将该值解释为真值,则可以使用内置函数bool()将任何值转换为布尔值(请参见上面的真值测试部分)。

它们分别写为False和True。

因此,在Java代码中,删除括号,将其更改trueTrue,就可以了:)



0

与您要声明的Java不同boolean flag = True,在Python中,您可以声明myFlag = True

Python会将其解释为布尔变量

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.