Ответ 1
Lambda принимает ту же подпись, что и обычные функции, и вы можете дать reg
значение по умолчанию:
f = lambda X, model, reg=1e3: cost(X, model, reg=reg, sparse=np.random.rand(10,10))
Что вы дадите ему, зависит от того, что по умолчанию функция cost
назначила этому же параметру. Эти значения по умолчанию хранятся в этой функции в структуре cost.__defaults__
, соответствующей именам аргументов. Возможно, проще всего использовать функцию inspect.getargspec()
, чтобы понять, что информация:
from inspect import getargspec
spec = getargspec(cost)
cost_defaults = dict(zip(spec.args[-len(defaults:], spec.defaults))
f = lambda X, model, reg=cost_defaults['reg']: cost(X, model, reg=reg, sparse=np.random.rand(10,10))
Кроме того, вы можете просто передать любой дополнительный аргумент ключевого слова:
f = lambda X, model, **kw: cost(X, model, sparse=np.random.rand(10,10), **kw)