2024-05-29 02:18:04 发布
网友
下面是一段代码:
if resp.email is None or resp.email == "":
我认为以下几点比较清楚:
第一种选择比第二种有什么好处吗?在
我对第二个选项的主要关注点是,如果resp.email是False或{},则隐藏bug的可能性。这不是生产代码中非常真实的场景吗?在
resp.email
False
在这个问题上是否有一个被广泛接受的标准或惯例?在
不会有一个普遍的答案,因为答案将取决于你想做什么。在
例如,在第一个例子中,假设something = 0。if something:将计算为False,但{}将计算为True。对于空字符串、空列表等也是如此
something = 0
if something:
所以你在寻找与布尔真值不相等的东西吗?使用第一个测试。另一方面,如果只想排除任何一个,则使用第二个。在
编辑:好吧,你完全改变了你的问题,但我的答案仍然成立。答案取决于天气,0、False、[]等都是有效值。我怀疑没有,所以我可能会用if not测试。在
if not
根据:https://www.python.org/dev/peps/pep-0008/#programming-recommendations,由于可读性,is not样式似乎是首选
is not
编辑:
我确实意识到这不是一回事,因为你把它比作没有not None,但我觉得它的翻译方式是一样的(也就是说,它的可读性还是比较高的)
not None
对问题编辑的回答(空列表):
在上面的链接中实际上提到了这种情况,并且“您应该使用空序列为false的事实:
if not list:
而不是:
您应该始终以简单为目标(这也会导致清晰),if something:比if something is not None:(双负数)简单,所以您应该使用第一个。如果您遇到一个特定的情况,其中something有一个错误的值,并且您希望检查该值与None相比,您可以检查:if something is False:,这不仅更清楚,而且更明确(因此读者更容易理解)。在
if something is not None:
something
None
if something is False:
通过写if A is not None:你没有向读者解释什么是价值的领域,这使得它含蓄而模糊。在
if A is not None:
这同样适用于if list:,它应该比if len(list) > 0:更好,后者不必要地冗长,并使情况复杂化。在
if list:
if len(list) > 0:
不会有一个普遍的答案,因为答案将取决于你想做什么。在
例如,在第一个例子中,假设}将计算为True。对于空字符串、空列表等也是如此
something = 0
。if something:
将计算为False,但{所以你在寻找与布尔真值不相等的东西吗?使用第一个测试。另一方面,如果只想排除任何一个,则使用第二个。在
编辑:好吧,你完全改变了你的问题,但我的答案仍然成立。答案取决于天气,0、False、[]等都是有效值。我怀疑没有,所以我可能会用
if not
测试。在根据:https://www.python.org/dev/peps/pep-0008/#programming-recommendations,由于可读性,
is not
样式似乎是首选编辑:
我确实意识到这不是一回事,因为你把它比作没有
not None
,但我觉得它的翻译方式是一样的(也就是说,它的可读性还是比较高的)对问题编辑的回答(空列表):
在上面的链接中实际上提到了这种情况,并且“您应该使用空序列为false的事实:
而不是:
^{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:
更好,后者不必要地冗长,并使情况复杂化。在相关问题 更多 >
编程相关推荐