我有下面的代码,它会导致 PyCharm
警告:
表达式可以简化
这个表达式检测到与布尔字面量的相等比较。
seq_group = []
if seq_group == []: # warning here
print("it is empty.")
如果我将代码更改为:
if seq_group is None:
会修复警告,但真正的问题是 None
和 []
空列表是否相同?
干杯!
我有下面的代码,它会导致 PyCharm
警告:
表达式可以简化
这个表达式检测到与布尔字面量的相等比较。
seq_group = []
if seq_group == []: # warning here
print("it is empty.")
如果我将代码更改为:
if seq_group is None:
会修复警告,但真正的问题是 None
和 []
空列表是否相同?
干杯!
None
和[]
空列表是相同的吗?
不是,使用它们会导致错误的行为:
seq_group = []
if seq_group is None:
print("it is empty")
这并不打印任何东西,None
在值和标识上与[]
完全不同。 None
表示值的缺失,[]
表示没有值的列表。 混淆可能来自于两者都偶然在条件语句中评估为False
。not
的seq_group
而不是使用带有==
的文字。if not seq_group:
print("it is empty")
seq_group = None
,那么当 not seq_group
时,会打印出 it is none
。这意味着在某些对象为 None
时,not
也可以起作用。 - daiyue
None
和[]
是否相同。 - Dimitris Fasarakis Hilliard