Есть ли причина, по которой вы будете использовать:

add2 = lambda n: n+2

Вместо того :

def add2(n): return n+2

Я обычно предпочитаю способ def, но время от времени я вижу, как используется lambda.

РЕДАКТИРОВАТЬ:
Вопрос не в том, что lambda - как неназванная функция, а в том, что лямбда - как именованная функция.

На этот же вопрос есть хороший ответ здесь.

0
dugres 20 Июл 2010 в 13:02

5 ответов

Лучший ответ

lambda хорош для небольших, неназванных функций, но в этом случае он не будет служить никакой цели, кроме как радовать функционалистов.

3
Philipp 20 Июл 2010 в 09:14

Вы не можете использовать def в выражениях: A def - это оператор. Так что это единственное место, где я бы использовал lambda.

0
Daren Thomas 23 Июл 2010 в 07:21

Гвидо Ван Россум (создатель Python) предпочитает def, а не лямбды (lambdas сделал это только в Python 3.0 на последнем момент) и нет ничего, что вы не можете сделать с def, что вы можете сделать с лямбдами.

Люди, которым нравится парадигма функционального программирования, похоже, предпочитают их. Иногда использование анонимной функции (которую вы можете создать с помощью лямбда-выражения) дает более читаемый код.

1
kgiannakakis 20 Июл 2010 в 09:33

Я обычно использую лямбду для одноразовых функций, которые собираюсь использовать только в одном месте, например, в качестве аргумента функции. Это объединяет логику и позволяет избежать заполнения пространства имен именами функций, которые мне не нужны.

Например я думаю

map(lambda x: x * 2,xrange(1,10))

Аккуратнее чем:

def bytwo(x):
    return x * 2

map(bytwo,xrange(1,10))
2
Dave Webb 20 Июл 2010 в 09:21

Я вспоминаю письмо Дэвида Мерца, что он предпочитал использовать форму add2 = lambda n: n+2, потому что он подчеркивал add2 - это чистая функция, которая не имеет побочных эффектов. Однако я думаю, что 99% программистов на Python будут использовать оператор def и использовать лямбду только для анонимных функций, поскольку именно для этого она и предназначена.

1
Dave Kirby 23 Июл 2010 в 07:50