bool在python中如何引用对象?

True和False是Python中的单例对象,所有引用均指向同一实例。通过直接使用关键字、比较表达式、bool()函数或变量赋值获取的布尔值都共享相同身份,可用is操作符或id()函数验证其唯一性。例如a=True、b=(2>1)、c=bool(1)时,a is b、b is c及id(a)==id(b)==id(c)均为True。尽管bool是int的子类,在数值上下文中True等价于1、False等价于0,但其作为布尔对象的身份唯一且不可重新创建,不推荐通过底层方式如bool.__new__构造新实例。

在 Python 中,bool 是一个内置类型,它只有两个值:TrueFalse。它们是单例对象,也就是说,在整个 Python 程序中,TrueFalse 各自只有一个实例。

bool 对象的引用方式

你可以通过以下几种方式引用 bool 对象:

  • 直接使用关键字 TrueFalse
  • 通过表达式生成布尔值,比如比较操作 3 > 1 返回 True
  • 调用 bool() 函数对任意对象进行真值测试,返回对应的布尔结果
  • 从变量中引用已赋值的布尔对象

由于 TrueFalse 是单例,所有指向它们的变量实际上都引用同一个对象。

验证 bool 对象的唯一性

可以使用 is 操作符或 id() 函数来确认这一点:

a = True
b = (2 > 1)
c = bool(1)

print(a is b) # 输出:True print(b is c) # 输出:True print(id(a) == id(b) == id(c)) # 输出:True

这说明无论怎么获得 True,都是同一个对象。

注意事项

虽然你可以把布尔值赋给变量并传递,但不要尝试去“创建”新的 bool 实例。例如,bool.__new__(bool, some_value) 是底层实现方式,一般用户不需要也不推荐直接使用。

另外,尽管 TrueFalse 在数值上下文中分别等价于 1 和 0(因为 bool 是 int 的子类),但它们的身份仍然是唯一的布尔对象。

基本上就这些。bool 在 Python 中的引用非常直接:你用到的每一个 True 都是那个唯一的 TrueFalse 也一样。