Лямбда являются анонимными, что означает они не имеют имя.
Вы всегда можете присвоить имя __name__
, если вы чувствуете, что они должны иметь один или иначе:
myfunc_l = lambda: None
myfunc_l.__name__ = 'foo'
Обратите внимание, что Python не может знать, что вы назначили объект lambda
функции для определенного имени; присваивание происходит после выполнения выражения lambda
. Помните, что вы не должны даже назначить lambda
:
result = (lambda x: x ** 2)(4)
или вы могли бы хранить lambda
в списке:
several_lambdas = [lambda y: (y // 2) for y in range(10, 20)]
и ни в одном контексте есть имя, чтобы присвоить эти объекты ,
С другой стороны, определения полномасштабных функций - это операторы, а не выражения, а инструкция def
требует указания имени. Вы никогда не можете использовать def
заявления, не называя полученную функцию, поэтому Python может присвоить имя объекта:
>>> def foo(): pass
...
>>> print foo.__name__
'foo'
Вы все еще можете присвоить foo
к чему-то еще, удалите foo
глобальную ссылку, названием функции объект, назначив атрибут __name__
, но он не изменит характер функции. lambda
s те же, действительно, кроме того, что нет никакого контекста для установки начального имени (и того факта, что они могут представлять только одно выражение).
Почему бы вам не попробовать? – sshashank124
Я пробовал, все, что у меня есть, –
Какое имя вы ожидали? – aisbaa