`如果某物`或者`如果某物不是无'?

2024-05-29 02:18:04 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是一段代码:

if resp.email is None or resp.email == "":

我认为以下几点比较清楚:

^{pr2}$

第一种选择比第二种有什么好处吗?在

我对第二个选项的主要关注点是,如果resp.emailFalse或{},则隐藏bug的可能性。这不是生产代码中非常真实的场景吗?在

在这个问题上是否有一个被广泛接受的标准或惯例?在


Tags: or代码nonefalse标准ifisemail
3条回答

不会有一个普遍的答案,因为答案将取决于你想做什么。在

例如,在第一个例子中,假设something = 0if something:将计算为False,但{}将计算为True。对于空字符串、空列表等也是如此

所以你在寻找与布尔真值不相等的东西吗?使用第一个测试。另一方面,如果只想排除任何一个,则使用第二个。在

编辑:好吧,你完全改变了你的问题,但我的答案仍然成立。答案取决于天气,0、False、[]等都是有效值。我怀疑没有,所以我可能会用if not测试。在

根据:https://www.python.org/dev/peps/pep-0008/#programming-recommendations,由于可读性,is not样式似乎是首选

编辑:

我确实意识到这不是一回事,因为你把它比作没有not None,但我觉得它的翻译方式是一样的(也就是说,它的可读性还是比较高的)

对问题编辑的回答(空列表):

在上面的链接中实际上提到了这种情况,并且“您应该使用空序列为false的事实:

if not list:

而不是:

^{pr2}$

您应该始终以简单为目标(这也会导致清晰),if something:if something is not None:(双负数)简单,所以您应该使用第一个。如果您遇到一个特定的情况,其中something有一个错误的值,并且您希望检查该值与None相比,您可以检查:if something is False:,这不仅更清楚,而且更明确(因此读者更容易理解)。在

通过写if A is not None:你没有向读者解释什么是价值的领域,这使得它含蓄而模糊。在

这同样适用于if list:,它应该比if len(list) > 0:更好,后者不必要地冗长,并使情况复杂化。在

相关问题 更多 >

    热门问题