Lor*_*Cat 1 python memory variables boolean
我看到有人说,在Python中,与布尔值的比较应该是 形式if x:,而不是if x == True:形式,当然也不是 形式if x is True:。
>>>
>>> id(True)
505509720
>>> a = True
>>> id(a)
505509720
>>> random_string_to_reference_a_different_area_of_memory = "Python"
>>> id(True)
505509720
>>>
Run Code Online (Sandbox Code Playgroud)
玩弄变量并查看内存位置(见上文),在我看来,只有一个True和一个False对象,那么我们为什么不应该这样做if x is True:(或者这样做实际上可以吗)?
if x == True另外,除了没有必要之外,还有什么理由我们不应该这样做== True?如果是的话,你能给我一个关于记忆的描述吗?
我个人认为 usingis比 using 更合适==,因为当我们进行比较时,看起来我们实际上是在查看变量是否指向True或False对象。谁能给我解释一下什么是最好的,为什么,以及它是如何运作的?
您不应该使用== Trueor == False,除非您明确需要测试布尔值(您几乎从不这样做)。在 Python 中执行布尔测试的首选方法是if foo和if not foo。
然而,从技术角度来看,使用is True和 并没有什么问题is False。在PEP 285(定义了 bool 类型)中:
值 False 和 True 将是单例,如 None。因为该类型有两个值,也许这些应该被称为“双例”?真正的实现将不允许创建 bool 的其他实例。
因此,每当您使用True或False最终得到相同的实例时。
| 归档时间: |
|
| 查看次数: |
2704 次 |
| 最近记录: |