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).


assert (x := 0) == 0

Use instead:

x = 0
assert x == 0