为什么Pylint认为与零比较不好?

时间:2019-06-30 05:26:24

标签: python pylint

对pintint的可选comparetozero扩展名检查与0的任何比较并将其标记出来。我不清楚为什么这样做不好。

According to the docstringcomparetozero模块,

  

在大多数情况下,您应该使用值为0的整数为假的事实。

     

此规则的例外情况是程序中允许0且其含义与无不同!

这到底是什么意思?

我对上述内容的理解是,这意味着您不应做类似的事情

def return_false():
    return False

if return_false() == 0:
    pass

因为这是在滥用0的虚假性质,但可以这样做

if foo % 4 == 0:
    pass

因为您正在比较两个整数,以查看它们在字面上是否均为零。

如果我的理解是正确的,那么对于要从字面上检查值是否为零或什么的情况下的实例,编写特定的# pylint: disable语句会更好吗?

1 个答案:

答案 0 :(得分:1)

Python的比较方式是使用隐式布尔检查或真实值。例如

some_val = 0
if some_val == 0: # non-pythonic way to check

vs 

if not some_val: # 0 is false for python and hence a boolean way is easier to read

最好说“如果不是这样”,并且变量的真实值基于各种形式,例如空列表或空字符串

总而言之,下面的内容读起来更好:

some_str = ''
if not some_str: # better than if some_str == ''

some_number = 0
if not some_number: # better than if some_number == 0

some_list = []
if not some_list: # better than if len(some_list) == 0