Форум сайта python.su
Покажите пожалуйста примеры, где использование lambda-функций более целесообразно, чем что-то аналогичное. Желательно, не сложные и с пояснениями. Как мне кажется, в любой ситуации можно обойтись без них, но раз их изобрели, то должны быть моменты, где они более уместны, несмотря на их некоторую запутанность (по крайней мере, для новичков).
Офлайн
Самый простой пример. Только что проскакивало у меня в 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()
Офлайн
2 igor.kaist, а в этом примере разве нельзя просто написать
self.exit=Button(self.win,text='Выход',command=self.win.destroy)
Офлайн
Viperнет, иначе, эта функция тут же вызовется…
2 igor.kaist, а в этом примере разве нельзя просто написать
Офлайн
Целесообразно использовать там, где аргументом должна быть функция, которой у вас еще нет, но которую легко сделать на базе другой функции.
Простой пример:
>>> 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]
Отредактировано (Июль 16, 2009 15:11:10)
Офлайн
paganmindХм. Сомневаюсь я что это удачные примеры использование лямбды.
Целесообразно использовать там, где аргументом должна быть функция, которой у вас еще нет, но которую легко сделать на базе другой функции.
[x.split(';') for x in s]
[pow(x,3) for x in s]
Офлайн
хороший пример – это параметр `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)]
Офлайн
igor.kaistНепонял, с чего бы ей сразу вызываться??? Передаётся ф-ция, просто забрали обёртку в виде лямбды.
нет, иначе, эта функция тут же вызовется…
Офлайн
EdВозможно примеры неудачные. На простых показать сложно. Смысл примера был в том, чтобы не решить конкретную задачу, а передать функции (map), которая требует в качестве аргумента другую функцию, новую модифицированную функцию.
Хм. Сомневаюсь я что это удачные примеры использование лямбды.
Офлайн
То есть лямбду удобно применять там, где надо передать небольшую функцию, как объект?
Офлайн