Почему вы используете лямбду вместо def? - PullRequest
0 голосов
/ 20 июля 2010

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

add2 = lambda n: n+2

вместо:

def add2(n): return n+2

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

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

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

Ответы [ 5 ]

3 голосов
/ 20 июля 2010

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

2 голосов
/ 20 июля 2010

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

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

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

аккуратнее:

def bytwo(x):
    return x * 2

map(bytwo,xrange(1,10))
1 голос
/ 23 июля 2010

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

1 голос
/ 20 июля 2010

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

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

0 голосов
/ 23 июля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...