python 为什么如果零,打印('True'),当零=0时,什么也不打印?[重复]

问题描述 投票:0回答:1

在python中,为什么

zero = 0
one = 1
if zero:
  print('True') # this print nothing
if one:
  print('True') # this print True

我想,当 zero = 0这应该是正确的,应该会给我一个答案。True但为什么什么都没有?如果这是正确的,为什么当 if one 它给我 True?

python python-3.x
1个回答
5
投票

因为... bool(0) == Falsebool(1) == True.


3
投票

参考本文。真值测试

任何对象都可以进行真值测试,用于if或while条件中,或作为下面布尔运算的操作数。下面的值被认为是假的。

  • 假的
  • 任何数字类型的零,例如,0,0L,0.0,0j。
  • 任何空序列,例如,'',(),[]。
  • 任何空的映射,例如,{}。
  • 用户定义的类的实例,如果该类定义了个 非零()或 ()方法,当该方法返回整数零或bool值False时。

其他所有的值都被认为是真--所以许多类型的对象总是真。

除非另有说明,否则具有布尔结果的操作和内置函数总是返回0或False,而返回1或True为真。(重要的例外:布尔运算 "or "和 "and "总是返回其操作数之一。)


1
投票

bool 的一个子类型。int.

bool 有两个值。TrueFalse你可以把它们看作是整数1和0的 "定制 "版本,只是打印方式不同。

TrueFalse 与1和0一样,只是它重新定义了 strrepr 以不同的方式显示它们。

>>> type(True)
<class 'bool'>
>>> isinstance(True, int)
True

>>> True == 1
True
© www.soinside.com 2019 - 2024. All rights reserved.