assignment-in-assert (RUF018)
作用
检查 assert 语句中的命名赋值表达式(例如 x := 0)。
为什么这不好?
命名赋值表达式(也称为“海象运算符”)用于在更大表达式的一部分中为变量赋值。
命名赋值在 assert 语句中在语法上是合法的。但是,当 Python 解释器在 -O 标志下运行时,assert 语句不会被执行。在这种情况下,命名赋值也会被忽略,这可能导致意外的行为(例如,访问未定义的变量)。
示例
建议改为
如果命名表达式定义的变量仅在 assert 语句内部被引用,该规则将避免对其进行标记;以下代码不会触发此规则:
以下代码也不会触发: