Необязательный аргумент в лямбда-функции

У меня есть функция:

cost(X, model, reg = 1e-3, sparse) 

И мне нужно передать эту функцию другой в форме:

 f(X, model) f(X, model, reg = reg) 

Я использую лямбда для этого:

 f = lambda X, model: cost(X, model, sparse = np.random.rand(10,10)) 

И питон жалуется, что лямбда получила неожиданный аргумент reg. Как это сделать правильно?

Если я сделаю другой путь:

 f = lambda X, model, reg: cost(X, model, reg = reg, sparse = np.random.rand(10,10)) 

Тогда это не работает в первом случае.

2 Solutions collect form web for “Необязательный аргумент в лямбда-функции”

Лямбда принимает ту же подпись, что и обычные функции, и вы можете дать 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) 

вы пробовали что-то вроде

f = lambda X, model, **kw: cost(X, model, sparse = np.random.rand(10,10), **kw)

то reg (и любой другой именованный аргумент, который вы хотите пройти (кроме разреженного)), должен работать нормально.

  • varargs в лямбда-функциях в Python
  • Использование функций более высокого порядка Python для манипулирования списками
  • Python: применять список функций к каждому элементу в списке
  • в чем причина использования _defaults и лямбда в python для разработки openerp?
  • Панды: применение Лямбды к нескольким кадрам данных
  • Поиск суммы в вложенном списке с использованием лямбда-функции
  • Python: определение функций на лету
  • Как установить pymysql на AWS лямбда
  • Использование декораторов на лямбдах в Python?
  • Подходящее выражение «ничего не делать» лямбда в питоне?
  • Python Tkinter OptionMenu добавляет команду нескольким OptionMenus
  • Python - лучший язык программирования в мире.