Python 中的惯用写法 - 检查是否为零

3

在Python中,检查一个值是否为零的惯用方法是什么?

if n == 0:

或者
if not n:

我认为第一个更符合显式的精神,但另一方面,空序列或None与第二个示例类似地进行检查。


1
最后一行回答了你的问题,你还期待什么? - thefourtheye
2
应避免使用第二种方式,因为有人可能会认为正在检查n是否为None。 - Roy Iacob
2
根据PEP-008,应该使用is not None来测试None - jonrsharpe
2个回答

4
如果您想检查是否为零,应该使用 if n == 0。您的第二个表达式并不是检查零,它检查任何被评估为 false 的值。
我认为答案在于您的需求;您真的想检查零,还是想处理许多可能是非数值类型的情况?
为了准确回答问题,我认为 n == 0 是正确的方法。
以下是使用 not n 路线的问题:
>>> def isZero(n):
...    return not n;
... 
>>> 
>>> isZero([])
True
>>> isZero(False)
True
>>> isZero("")
True
>>> 

大多数人会说这个“isZero”函数不正确。

为什么在Python代码中会在一行结尾处加上分号;? - glglgl
1
很简单;在Python代码的一行后面加上 ; 是因为有时候会同时使用多种编程语言,容易混淆。 - FrobberOfBits

3

我非常赞同“说出你的意思”的观点。你的两个陈述意思不同。第一个意思是:

如果n等于0

而第二个意思是:

如果n的真值为False

虽然它们在实践中对于整数有相同的效果,但实际意义应该决定你使用哪个。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接