Что здесь происходит? Я пытаюсь создать список функций:Python Lambda Problems
def f(a,b):
return a*b
funcs = []
for i in range(0,10):
funcs.append(lambda x:f(i,x))
Это не делает то, что я ожидаю. Я хотел бы ожидать список действовать следующим образом:
funcs[3](3) = 9
funcs[0](5) = 0
Но все функции в списке кажутся одинаковыми, и быть установка фиксированное значение будет 9:
funcs[3](3) = 27
funcs[3](1) = 9
funcs[2](6) = 54
Любые идеи?
Это должно быть functools.partial (f, i) – FogleBird
Согласен.Частичное приложение - это путь сюда. –
здесь частичное (f, i) означает частичное (f, b = i) не частичное (f, a = i). так что это не то же самое, что исходный пост. Приложение с частичной функцией «справа» (http://www.gossamer-threads.com/lists/python/dev/715103) было отклонено два раза. – sunqiang