为什么 bool 从技术上来说是 Python 中 int 的子类?
当使用 Python 的 memcached 库存储布尔值时,一开始会感到惊讶观察其返回的整数。更深入的调查表明,Python 将 bool 值的 isinstance(val, int) 解释为 True,这意味着 bool 在某种程度上是 int 的子类。
bool 和 int 之间的这种特殊关系有历史解释。在 Python 版本 2.2 或 2.3 中引入 bool 类型之前,布尔值的标准表示是使用整数 0 (False) 和 1 (True)。
为了确保与依赖于此的现有代码的兼容性按照约定,Python 以镜像 0 和 1 行为的方式实现 bool 类型。这意味着不仅保留它们的真值,而且还扩展它们的功能以支持所有积分运算。
因此,Python 的 bool类型本质上“伪装”为整数。虽然可以在数字上下文中使用布尔值,但不建议这样做。同样,测试 bool 和整数的真值是否相等可能会导致意外行为。
这一历史演变解释了为什么 bool 是 Python 中 int 的子类。它作为Python语言扩展和兼容性需求的历史神器。
以上是Python 中 bool 何时以及为何成为 int 的子类?的详细内容。更多信息请关注PHP中文网其他相关文章!