跳到内容

collection-literal-concatenation (RUF005)

有时提供修复。

作用

检查使用 + 运算符连接集合的情况。

为什么这不好?

在 Python 中,+ 运算符可用于连接集合(例如,x + y 连接列表 xy)。

但是,可以使用解包运算符更有效地连接集合(例如,[*x, *y] 连接 xy)。

建议使用解包运算符来连接集合,因为它更具可读性和灵活性。 * 运算符可以解包任何可迭代对象,而 + 运算符仅适用于特定的序列,在许多情况下,这些序列必须属于同一类型。

示例

foo = [2, 3, 4]
bar = [1] + foo + [5, 6]

建议改为

foo = [2, 3, 4]
bar = [1, *foo, 5, 6]

修复安全性

此修复始终标记为不安全,因为 + 运算符使用 __add__ 魔术方法,而 * 解包使用 __iter__ 魔术方法。 这两者都可能有自定义实现,从而导致修复程序改变程序行为。

参考