表达式可以在布尔文字上简化[重复]
Posted
技术标签:
【中文标题】表达式可以在布尔文字上简化[重复]【英文标题】:expression can be simplified on boolean literal [duplicate] 【发布时间】:2017-02-06 08:53:06 【问题描述】:我有以下代码重现 PyCharm
警告,
表达式可以简化
此表达式检测与布尔文字的相等比较。
seq_group = []
if seq_group == []: # warning here
print("it is empty.")
如果我将代码更改为,
if seq_group is None:
将修复警告,但真正的问题是 None
和 []
emplty 列出相同的东西?
干杯
【问题讨论】:
我同意@ŁukaszRogalski,我确信最佳答案可以解决警告。我有点犹豫要不要关闭,因为实际的问题是None
是否与 []
相同。
【参考方案1】:
None
和[]
空列表是同一个东西吗?
不,这会导致错误的行为:
seq_group = []
if seq_group is None:
print("it is empty")
这不会打印任何东西,None
与 []
完全不同,价值和身份都是明智的。 None
表示没有值,[]
表示没有值的列表。混淆可能是因为两者都碰巧在条件句中评估 False
。
警告可能是因为您可以简单地将seq_group
与not
一起使用,而不是将文字与==
一起使用:
if not seq_group:
print("it is empty")
【讨论】:
我还发现如果seq_group = None if not seq_group: print("it is none")
,it is none
会被打印出来,这意味着not
也适用于None
的对象。以上是关于表达式可以在布尔文字上简化[重复]的主要内容,如果未能解决你的问题,请参考以下文章