根据我对PEP的建议的理解,如果您知道可以合理确定foo
(通常是这种情况)的类型,则测试显式虚假值是多余的,并且会降低可读性。例如,在中foo = [i for i in range(10) if i == x]
,您可以肯定地确定唯一的假值foo
是[]
(假设不引发任何异常)。在这种情况下,使用是多余的foo == []
并且not foo
更好。
另一方面,foo == []
或的语义值foo == False
有时更有价值,因此 应 代替()使用(IMHO)not foo
。具体取决于您要交流的内容。事实上not foo
手段 “foo
有 错误的价值?”,而foo == False
手段 “foo
具有相同的价值False
?”。
PEP声明其中包含的所有内容都是 准则 。规则有例外,这一规则没有什么不同。