bool()

作者: import_hello | 来源:发表于2018-09-11 00:24 被阅读0次

转载须注明出处:简书@Orca_J35 | GitHub@orca-j35

class bool([x])

该内置函数本质上是在调用 bool 类的构造函数,从而获得一个布尔(bool)对象。bool 类仅有 FalseTrue 两个实例 (详见 Boolean Values)。bool 类是 int 类的子类(详见 Numeric Types — int, float, complex),但不能为 bool 类创建子类。

Tips:在数值上下文中(numeric contexts) :False 被视作 0,True 被视作 1。

>>> 1 + True
2

对于bool() ,如果省略 x 参数,则会返回 False

>>> bool() 
False

如果存在 x 参数,bool() 会使用标准真值测试x 进行转换。当 x 的真值为 false 时,bool() 会返回 False ;反之则返回 True

>>> bool(1)
True
>>> bool(0)
False
>>> bool("False") # 非空字符串始终为True
True
>>> bool([0, 0])
True
>>> bool([])
False
>>> bool(2+2)
True

真值为 false 的对象

默认情况下,对象的真值为 true,除非存在以下两种情况:

  • 对象中定义了 __bool__() 方法,并且该方法返回 False
  • 对象中定义了 __len__() 方法,并且该方法返回 0

如果同时定义了上述两种方法, __bool__() 的优先级高于 __len__()

>>> class Cls():
    def __bool__(self):
        return True

    def __len__(self):
        return 0

>>> a_cls = Cls()
>>> bool(a_cls)
True

下面是真值为 false 的内置对象:

  • 常量 NoneFalse 被定义为 false
  • 任何等于 0 的数值类型:0, 0.0, 0j, Decimal(0), Fraction(0, 1)
  • 空序列(sequences)和集合(collections): '', (), [], {}, set(), range(0)

相关文章

网友评论

      本文标题:bool()

      本文链接:https://www.haomeiwen.com/subject/zyhliftx.html