Найти - Пользователи
Полная версия: Примеры выгодного практического применения lambda-функций
Начало » Python для новичков » Примеры выгодного практического применения lambda-функций
1 2
pasaranax
Покажите пожалуйста примеры, где использование lambda-функций более целесообразно, чем что-то аналогичное. Желательно, не сложные и с пояснениями. Как мне кажется, в любой ситуации можно обойтись без них, но раз их изобрели, то должны быть моменты, где они более уместны, несмотря на их некоторую запутанность (по крайней мере, для новичков).
igor.kaist
Самый простой пример. Только что проскакивало у меня в gui
    self.exit=Button(self.win,text='Выход',command=lambda :self.win.destroy() )
# без lambda было так...
self.exit=Button(self.win,text='Выход',command=self.exit_action )
....
def exit_action(self):self.win.destroy()
Можно использовать, можно не использовать…. В примере выше, нецелесообразно создавать новую функцию для одного лишь действия.
Viper
2 igor.kaist, а в этом примере разве нельзя просто написать
self.exit=Button(self.win,text='Выход',command=self.win.destroy)
igor.kaist
Viper
2 igor.kaist, а в этом примере разве нельзя просто написать
нет, иначе, эта функция тут же вызовется…
paganmind
Целесообразно использовать там, где аргументом должна быть функция, которой у вас еще нет, но которую легко сделать на базе другой функции.
Простой пример:


>>> s=('111;222;333','555;666;777')
>>> map(lambda x: x.split(';'), s)
[['111', '222', '333'], ['555', '666', '777']]
или

>>> s = (1,2,3,4,5)
>>> map(lambda x: pow(x,3), s)
[1, 8, 27, 64, 125]
Ed
paganmind
Целесообразно использовать там, где аргументом должна быть функция, которой у вас еще нет, но которую легко сделать на базе другой функции.
Хм. Сомневаюсь я что это удачные примеры использование лямбды.
Вот аналоги ваших примеров, которые на мой взгляд более понятно читаются, да и работают быстрее:
[x.split(';') for x in s]
[pow(x,3) for x in s]
j2a
хороший пример – это параметр `key` в `sorted`
>>> a = [(1, 2), (2, 9), (3, 5)]

>>> sorted(a)
<<< [(1, 2), (2, 9), (3, 5)]

>>> sorted(a, key=lambda x: x[1])
<<< [(1, 2), (3, 5), (2, 9)]
Viper
igor.kaist
нет, иначе, эта функция тут же вызовется…
Непонял, с чего бы ей сразу вызываться??? Передаётся ф-ция, просто забрали обёртку в виде лямбды.
paganmind
Ed
Хм. Сомневаюсь я что это удачные примеры использование лямбды.
Возможно примеры неудачные. На простых показать сложно. Смысл примера был в том, чтобы не решить конкретную задачу, а передать функции (map), которая требует в качестве аргумента другую функцию, новую модифицированную функцию.
pasaranax
То есть лямбду удобно применять там, где надо передать небольшую функцию, как объект?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB