cell-var-from-loop / W0640#

Message emitted:

Cell variable %s defined in loop

Description:

A variable used in a closure is defined in a loop. This will result in all closures using the same value for the closed-over variable.

Correct code:

def bar(x):
    print(x)


def foo(numbers):
    for i in numbers:
        bar(i)

Problematic code:

def foo(numbers):
    for i in numbers:
        def bar():
            print(i)  # [cell-var-from-loop]
        bar()

Related links:

Created by the variables checker.