跳到内容

if-else-block-instead-of-dict-get (SIM401)

源自 flake8-simplify 代码检查器。

有时提供修复。

作用

检查可以被 dict.get 调用替换的 if 语句。

为什么这不好?

dict.get() 调用可用于替换 if 语句,这些语句在两个分支中都将值分配给变量,如果在找不到键时则回退到默认值。 如果可能,使用 dict.get 更简洁,更符合语言习惯。

预览模式 下,此规则还将建议用 dict.get 调用替换 if-else *表达式*。

示例

foo = {}
if "bar" in foo:
    value = foo["bar"]
else:
    value = 0

建议改为

foo = {}
value = foo.get("bar", 0)

如果启用了预览模式

value = foo["bar"] if "bar" in foo else 0

建议改为

value = foo.get("bar", 0)

参考