我已经看到,在Python中,与布尔值的比较应该是if x:
,而不是{
>>>
>>> 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
还是{
你不做}。采用以下代码:
x is <True/False>
或x == <True/False>
的一个原因是你并不总是在测试True
或{如果你做},这两种方法都不会正确计算真值y。还有很多其他例子,其中{a1}应该和{}和{}本身一样可接受,例如
^{pr2}$user_input is True
或{可读性较差。在
您也不应该使用}。在
== True
或== False
,除非您明确地需要针对布尔值进行测试(您几乎从来不会不这样做)。在Python中执行布尔测试的首选方法是if foo
和{然而,从技术的角度来看,使用}没有什么错。在PEP 285(它定义了bool类型):
is True
和{因此,无论何时使用
True
或False
,都会得到相同的实例。在相关问题 更多 >
编程相关推荐