【发布时间】:2014-01-27 23:29:33
【问题描述】:
在/tmp/spam.py:
n = 69
if n == True:
print 'potato'
pep8 实用程序抱怨这个条件:
wim@SDFA100461C:/tmp$ pep8 spam.py
spam.py:3:6: E712 comparison to True should be 'if cond is True:' or 'if cond:'
- 根据pep8 本身,第一个建议是错误的/“更糟”
- 第二个建议改变了代码的行为
如果您确实确实想要检查与True 的相等性,最佳实践是什么?使用is 与True 进行身份检查是否可以?为什么 pep8 实用程序提供了 pep8 本身明确不鼓励的替代方案?
【问题讨论】:
-
你为什么要检查一个整数变量,看看它是否是一个布尔值?
-
为什么需要显式测试
True值?如果您确实必须仅测试True,则使用is True。 -
FWIW,PEP 8 确实说“不要将布尔值与 True 或 False [...] 进行比较”,而您所拥有的不是布尔值。虽然...是的,当 PEP 说情况更糟时,该工具建议
is有点奇怪。不过,您的最后一个问题可能应该问该工具的开发人员。