вы можете заставить захват переменной использовать аргумент со значением по умолчанию:
>>> for i in [0,1,2,3]:
... adders[i]=lambda a,i=i: i+a # note the dummy parameter with a default value
...
>>> print( adders[1](3) )
4
Идея состоит в том, чтобы объявить параметр (умно названный i
) и присвоить ему значение по умолчанию переменную, которую вы хотите захватить (значение i
)