Перейти к содержимому
21 / 22

Что такое замыкания (closures) и правило LEGB, и почему `lambda` в цикле часто ловит баг «позднего связывания»?

LEGB — порядок поиска имени: Local → Enclosing → Global → Builtin. Closure — это вложенная функция, удерживающая ссылку на переменную из enclosing scope. Python захватывает переменную, а не значение на момент определения, поэтому lambda i: ... внутри for i in range(...) все увидят финальное значение i. Чинится через дефолтный аргумент lambda i=i: или functools.partial.

Что такое замыкания (closures) и правило LEGB, и почему `lambda` в цикле часто ловит баг «позднего связывания»? | JScriptiser