если вы просто хотите иметь функцию, которая возвращает то же самое, независимо от того, с какими аргументами она вызывается, это нормально.Вы никоим образом не обязаны использовать любые ваши аргументы.
В Python lambda
- это функция без имени (и некоторых других, не связанных ограничений)
Если вы собираетесь взять лямбда-выражение и немедленно присвоить его возвращаемое значение переменной, вы даете функции имя.Не делайте этого, просто определите обычную функцию.Вы должны обращаться к лямбде, когда вам нужно передать функцию другой функции, и функция, которую вы хотите использовать, мала и даже не заслуживает имени (например, когда она всегда возвращает 1
).В Python есть несколько таких «функций высокого порядка» (функции, которые принимают другие функции в качестве аргументов), map
, filter
и reduce
находятся во встроенном пространстве имен.
#never!
always_return_one = lambda ignored_argument: 1
#OK: functions with names are def'ed not lambda'd
def always_return_one(ignored_argument):
return 1
#Also OK: pass the lambda to another function as soon as you spell it.
modified_list = some_highorder_function(lambda ignored: 1, [1, 2, 3, 4, 5])
Некоторые избольшинство используемых функций высокого порядка в Python имеют специальный синтаксис.В приведенном выше случае, если функция была map
, вы можете использовать понимание списка следующим образом:
modified_list = [1 for ignored in [1, 2, 3, 4, 5]]
, который читается немного легче и последовательно быстрее !