跳到内容

check-and-remove-from-set (FURB132) (检查并从集合中移除)

派生自 refurb 代码检查工具。

修复总是可用的。

作用

检查使用 set.remove 的情况,这些情况可以用 set.discard 替换。

为什么这不好?

如果一个元素存在于集合中,并且应该被移除,那么使用 discard 更简洁,也更符合习惯用法。

已知问题

由于类型推断的限制,这条规则容易出现误报,因为它只会检测实例化为字面量或使用类型注解的集合。

示例

nums = {123, 456}

if 123 in nums:
    nums.remove(123)

建议改为

nums = {123, 456}

nums.discard(123)

参考