对pintint的可选comparetozero
扩展名检查与0
的任何比较并将其标记出来。我不清楚为什么这样做不好。
According to the docstring的comparetozero
模块,
在大多数情况下,您应该使用值为0的整数为假的事实。
此规则的例外情况是程序中允许0且其含义与无不同!
这到底是什么意思?
我对上述内容的理解是,这意味着您不应做类似的事情
def return_false():
return False
if return_false() == 0:
pass
因为这是在滥用0
的虚假性质,但可以这样做
if foo % 4 == 0:
pass
因为您正在比较两个整数,以查看它们在字面上是否均为零。
如果我的理解是正确的,那么对于要从字面上检查值是否为零或什么的情况下的实例,编写特定的# pylint: disable
语句会更好吗?
答案 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