【发布时间】:2015-04-03 16:35:26
【问题描述】:
我看到有人说,在 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
>>>
玩弄变量并查看内存位置(见上文),在我看来只有一个 True 和一个 False 对象,所以我们为什么不应该这样做 if x is True:(或者是这样做真的很好)?
另外,除了== True 是不必要的,我们还有什么理由不应该做if x == True;如果是这样,你能从记忆的角度给我一个描述吗?
我个人觉得使用is 比使用== 更合适,因为当我们进行比较时,看起来我们实际上是在查看一个变量是指向True 还是False 对象。谁能给我解释一下什么是最好的,为什么,以及它是如何运作的?
【问题讨论】:
-
大概当你说你已经“看到它说”时,你的意思是python.org/dev/peps/pep-0008/#programming-recommendations?此外,“它是如何工作的” 对于 SO 问题来说过于宽泛。
-
True和False的 id 看起来 是一致的,并不意味着它们就一定是一致的。 -
仅供参考,查看两个对象 ID 而没有这些对象同时处于活动状态是毫无意义的。旧的可能已被垃圾收集,导致新的重用其内存位置。
-
@MarkRansom 不过对他们来说是有道理的。我看看能不能在网上找到答案。
标签: python variables memory boolean