Skip to content

assignment-in-assert (RUF018)

What it does

Checks for named assignment expressions (e.g., x := 0) in assert statements.

Why is this bad?

Named assignment expressions (also known as "walrus operators") are used to assign a value to a variable as part of a larger expression.

Named assignments are syntactically valid in assert statements. However, when the Python interpreter is run under the -O flag, assert statements are not executed. In this case, the named assignment will also be ignored, which may result in unexpected behavior (e.g., undefined variable accesses).

Examples

assert (x := 0) == 0

Use instead:

x = 0
assert x == 0

References