How do I use a Boolean in Python?

Does Python actually contain a Boolean value? I know that you can do:

checker = 1
if checker:
#dostuff

But I'm quite pedantic and enjoy seeing booleans in Java. For instance:

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

Is there such a thing as a Boolean in Python? I can't seem to find anything like it in the documentation.

668690 次浏览
checker = None


if some_decision:
checker = True


if checker:
# some stuff

[编辑]

For more information: http://docs.python.org/library/functions.html#bool

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

布尔型内建函数大写: TrueFalse

还要注意的是,您可以使用 checker = bool(some_decision)作为一种简写—— bool将永远只返回 TrueFalse

为了将来的参考知道 定义 ABC0或 __len__的类将是 TrueFalse取决于这些函数的结果是好的,但是实际上每个其他对象的布尔结果将是 True(除了 None对象、空序列和数字零)。

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

引自文档:

布尔值是两个常量对象 False 和 True。它们被用来表示真值(尽管其他值也可以被认为是假值或真值)。在数值上下文中(例如,当用作算术运算符的参数时) ,它们的行为分别类似于整数0和1。内置的函数 bool ()可以用来将任何值强制转换为布尔值,如果这个值可以被解释为真值的话(参见上文“真值测试”一节)。

它们分别被写成 False 和 True。

所以在 java 代码中删除大括号,将 true改为 True,就可以了:)

显然是 TrueFalse

否则,None计算结果为 False,整数 0和浮点 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)

等等。

是的,有一个 bool数据类型(它从 int继承而来,只有两个值: TrueFalse)。

但是 Python 对每个对象都有 boolean-able的概念,在调用函数 bool([x])时使用这个概念。

详见: 对象. < strong > nonzero boolean-value-of-objects-in-python

Unlike Java where you would declare boolean flag = True, in Python you can just declare myFlag = True

Python 会将其解释为一个布尔变量

Python 中的布尔值是整数的子类,布尔值的构造函数是 bool

 issubclass(bool,int) // will return True
isinstance(True,bool) , isinstance(False,bool) //they both True

TrueFalse是单例对象。它们将在应用程序的整个生命周期中保留相同的内存地址。当您键入 True时,python 内存管理器将检查它的地址并拉取值“1”。对于 False,它的值是’0’。

Comparisons of any boolean expression to True or False can be performed using either is (identity) or == (equality) operator.

int(True) == 1
int(False) == 0

但是请注意,True和’1’不是同一个对象,您可以检查:

 id(True) == id(1) // will return False

你也很容易看出来

  True > False // returns true cause 1>0

任何整数运算都可以处理布尔值。

  True + True + True =3

All objects in python have an associated truth value. Every object has True value except:

  • 没有

  • 假的

  • 任何数值类型(0.0.0.0 + 0 j 等)

  • 空序列(list,tuple,string)

  • 空映射类型(字典、集合等)

  • 实现返回 False0__bool____len__方法的自定义类。

Python 中的每个类都有由特殊实例方法定义的 true 值:

 __bool__(self)   OR
__len__

当您调用 bool(x)时,python 将实际执行

 x.__bool__()

如果实例 x没有这个方法,那么它将执行

 x.__len__()

如果不存在,则默认值为 True

For Example for int class we can define 布尔 as below:

  def __bool__(self):
return self != 0

对于 bool (100) ,100 !=0 将返回 True

bool(100) == True

你可以很容易地检查 bool(0)将是 False。对于 int 类的实例,只有0将返回 False。

另一个例子 = bool ([1,2,3])

[1,2,3]没有定义 __bool__()方法,但是它有 __len__(),由于它的长度大于0,它将返回 True。现在您可以看到为什么空列表返回 False