跳到内容

unnecessary-dict-kwargs (PIE804)

派生自 flake8-pie 代码检查工具。

有时提供修复。

作用

检查不必要的 dict 关键字参数。

为什么这不好?

如果 dict 的键是有效的标识符,则可以直接将其作为关键字参数传递,而无需构建不必要的字典。 这也使代码更具类型安全性,因为类型检查器通常无法精确地验证动态关键字参数。

示例

def foo(bar):
    return bar + 1


print(foo(**{"bar": 2}))  # prints 3

# No typing errors, but results in an exception at runtime.
print(foo(**{"bar": 2, "baz": 3}))

建议改为

def foo(bar):
    return bar + 1


print(foo(bar=2))  # prints 3

# Typing error detected: No parameter named "baz".
print(foo(bar=2, baz=3))

修复安全性

此规则的修复被标记为对于项之间穿插注释的字典是不安全的,因为注释可能会被删除。

例如,在以下情况下,修复将被标记为不安全

foo(
    **{
        # comment
        "x": 1.0,
        # comment
        "y": 2.0,
    }
)

因为这将被转换为 foo(x=1.0, y=2.0),而没有任何注释。

参考