我知道 Python 保证只有一个 NoneType
实例,即 None
对象,因此您可以安全地使用 is None
测试是否等于 None
。
bool
True
和 False
是否有等效的保证(即每个只有一个实例)?
如果不是,为什么不呢?
编辑: 特别是,我注意到 (n+0) is (0+n)
为 n 给出 True
range(-5, 257)
和 False
否则。换句话说,零、前 256 个正整数和前 5 个负整数似乎是预缓存的,不会再次实例化。我猜这是解释器的选择(在我的例子中是 CPython),而不是语言的规范。而 bool
派生自 int
,所以我仍然想知道我对其他解释器有什么期望。
编辑:澄清一下,由于这似乎引起了很多困惑,我的意图是不测试值的 boolean 解释。为此,我绝不会使用 is True
或 is False
。我的意图是能够区分 False
与其他所有内容,在一个变量中,该变量可以具有多种类型的值,包括空字符串、零和 None
,类似地真
。我自己是一名经验丰富的程序员,当我看到“if booleanvar == True”时会感到畏缩。
关于重复的注意事项:这个问题据称是(this 和this)的重复问题不回答这个问题;他们只是声明 bool
是 int
的子类,主要区别在于它们的 repr
,而不是 if True
和 False
保证是唯一的。
此外,请注意,这不是关于名称 True
和False
绑定(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/