python - Python 中只有一个 True 和一个 False 对象吗?

标签 python object boolean instance

我知道 Python 保证只有一个 NoneType 实例,即 None 对象,因此您可以安全地使用 is None测试是否等于 None

bool TrueFalse 是否有等效的保证(即每个只有一个实例)?

如果不是,为什么不呢?

编辑: 特别是,我注意到 (n+0) is (0+n) 为 n 给出 True range(-5, 257)False 否则。换句话说,零、前 256 个正整数和前 5 个负整数似乎是预缓存的,不会再次实例化。我猜这是解释器的选择(在我的例子中是 CPython),而不是语言的规范。而 bool 派生自 int,所以我仍然想知道我对其他解释器有什么期望。

编辑:澄清一下,由于这似乎引起了很多困惑,我的意图是测试值的 boolean 解释。为此,我绝不会使用 is Trueis False。我的意图是能够区分 False 与其他所有内容,在一个变量中,该变量可以具有多种类型的值,包括空字符串、零和 None,类似地。我自己是一名经验丰富的程序员,当我看到“if booleanvar == True”时会感到畏缩。

关于重复的注意事项:这个问题据称是(thisthis)的重复问题不回答这个问题;他们只是声明 boolint 的子类,主要区别在于它们的 repr,而不是 if TrueFalse 保证是唯一的。

此外,请注意,这不是关于名称 TrueFalse 绑定(bind)到什么的问题,而是关于实例的问题bool

最佳答案

来自文档(https://docs.python.org/2/reference/datamodel.html#the-standard-type-hierarchy):

Booleans

These represent the truth values False and True. The two objects representing the values False and True are the only Boolean objects.

只有两个对象,任何产生 boolean 值的计算都将产生这两个现有对象之一:

>>> (1 == 1) is True
True
>>> (1 == 0) is False
True

关于python - Python 中只有一个 True 和一个 False 对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24842852/

相关文章:

PHP 数组到对象

javascript - 选择框中的 Angular , boolean 值

python - 根据图像 python 内的边框裁剪图像

javascript - 为什么传递给函数的对象可以改变但不能在 javascript 中重新分配?

python - 使用 Swagger 的同一 def 中的 HTTP 方法的语法

javascript - js array.IndexOf 不能处理对象?

javascript - 为什么假的不会变成真的?

Java boolean 值在 if 语句中不带断点

python - python : input and output arrays 的 swig 类型映射

python - 尝试使用 VS Code 使用 Python3 打开 CSV 文件时出现意外结果