如何在Python中使用布尔值?

Fed*_*rer 107 python boolean

Python实际上是否包含布尔值?我知道你可以这样做:

checker = 1
if checker:
    #dostuff
Run Code Online (Sandbox Code Playgroud)

但我很迂腐,喜欢看Java中的布尔.例如:

Boolean checker;
if (someDecision)
{
    checker = true;
}
if(checker)
{
    //some stuff
}
Run Code Online (Sandbox Code Playgroud)

Python中有布尔这样的东西吗?我似乎无法在文档中找到类似的东西.

Bas*_*ard 140

checker = None 

if some_decision:
    checker = True

if checker:
    # some stuff
Run Code Online (Sandbox Code Playgroud)

[编辑]

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

您的代码也可以工作,因为1在必要时转换为True.实际上Python很长一段时间都没有布尔类型(如旧C),而且有些程序员使用整数而不是布尔值.

  • 使用checker =(some_decision)(例如checker =(a <b))而不是'if'通常更简单. (16认同)
  • 这个片段有点误导......在测试之前你还需要定义"checker".虽然OP早先定义了它,但在你的示例中,checker = None是绝对必要的,否则你将获得UnboundLocalError (10认同)

Mar*_*off 92

boolean builtins大写:TrueFalse.

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

很高兴知道将来参考定义__nonzero____len__将要TrueFalse取决于这些函数的结果的类,但几乎所有其他对象的布尔结果将是True(除了None对象,空序列和数字零).

  • 虚张声势:有什么不接受你觉得最有帮助的答案?如果另一个答案得到更多支持则完全无关紧要. (23认同)
  • 普遍的投票也是这个答案.考虑改变你的投票. (2认同)

Ter*_*ahl 11

True...... False显然.

否则,None求值为False,整数0和float也是如此0.0(虽然我不会像那样使用浮点数).此外,空列表[],空连音符()和空字符串''""评估为False.

使用该功能自己尝试bool():

bool([])
bool(['a value'])
bool('')
bool('A string')
bool(True)  # ;-)
bool(False)
bool(0)
bool(None)
bool(0.0)
bool(1)
Run Code Online (Sandbox Code Playgroud)

等等..


Anu*_*yal 5

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

引自doc:

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

它们分别写为False和True.

所以在java代码中删除大括号,更改trueTrue,你会好的:)