首页  >  文章  >  后端开发  >  Python 中 bool 何时以及为何成为 int 的子类?

Python 中 bool 何时以及为何成为 int 的子类?

Susan Sarandon
Susan Sarandon原创
2024-10-22 06:20:31836浏览

When and Why is bool a Subclass of int in Python?

为什么 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn