【发布时间】:2015-07-20 18:18:11
【问题描述】:
当我使用 == 运算符与空列表进行比较时,PyCharm (4.0.6) 会报错,但当我使用 is 运算符时不会报错:
我猜这与 PEP 8 有关,但问题是当我使用 is 运算符时,正如 PyCharm 所建议的那样,我有一个误报。这是 iPython shell 中的一个简单示例,表明在这种情况下 == 运算符似乎更合适,因为 is 运算符返回一个假阴性:
In[2]: actions = []
In[3]: actions == []
Out[3]: True
In[4]: actions is []
Out[4]: False
有人能解释一下为什么 PyCharm 在与空列表进行比较时会抱怨 == 运算符吗?根据 PEP 8,我做错了吗?
【问题讨论】:
-
==没有错误,它只是暗示有更好的方法。 -
使用
==运算符似乎更明确,但它会强制类型区分。由于 Python 是“鸭子类型”,我想这就是为什么他们提供了一个单一的解决方案来检查序列是否为空。使用if seq:适用于列表、字符串、元组和字典。 -
如果有人觉得它有用,我创建了一个 youtube 教程,讨论 '==' 运算符并比较检查列表是否为空的不同方法youtube.com/watch?v=8V88bl3tuBQ