【问题标题】:Idiomatic Python - checking for zero惯用的 Python - 检查零
【发布时间】:2014-05-12 13:29:43
【问题描述】:

在 Python 中检查零值的惯用方法是什么?

if n == 0:

if not n:

我认为第一个更本着明确的精神,但另一方面,类似于第二个示例检查空序列或 None。

【问题讨论】:

  • 最后一行回答了你的问题。你还期待什么?
  • 应该避免使用第二个,因为有人可能认为 n 正在检查 None'ness。
  • @RoyIacob None 应使用 is not None 进行测试,根据 PEP-008

标签: python pep8 idioms


【解决方案1】:

如果你想检查零,你应该使用if n == 0。您的第二个表达式不检查零,它检查任何评估为假的值。

我认为答案在于您的要求;您真的要检查零,还是要处理很多 n 可能是非数字类型的情况?

本着准确回答所提问题的精神,我认为n == 0 是正确的选择。

not n 路由有什么问题:

>>> def isZero(n):
...    return not n;
... 
>>> 
>>> isZero([])
True
>>> isZero(False)
True
>>> isZero("")
True
>>> 

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

【讨论】:

  • 为什么要在 Python 中的一行后面加上 ;
  • 这很简单;有人会在一行 python 后面加上;,因为一个人同时使用多种语言,很容易混淆!
【解决方案2】:

我非常支持说出你的意思。你的两个陈述意味着不同的东西。第一种意思:

如果 n 等于 0

而第二个意思是:

如果n的真值为False

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

【讨论】:

    猜你喜欢
    • 2011-12-15
    • 2019-04-26
    • 1970-01-01
    • 2015-06-05
    • 2019-06-27
    • 2015-05-17
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    相关资源
    最近更新 更多