Напомню, что lambda-выражения в языке Python при выполнении генерируют новые объекты анонимных функций. Если необходимо, чтобы в функцию обработчика передавались дополнительные данные, можно зарегистрировать lambda-выражение, откладывающее вызов фактической функции, и определить в нем необходимые дополнительные данные.
Как этим воспользоваться, будет показано далее в этой части книги, но для иллюстрации основных идей в примере 7.13 демонстрируется, как будет выглядеть приложение 7.12, если задействовать в нем инструкцию lambda вместо def.
Пример 7.13. PP4E\Gui\Intro\gui3b.py
import sys
from tkinter import * # lambda—выражение генерирует функцию
widget = Button(None, # но содержит всего лишь выражение
text=’Hello event world’, command=(lambda: print(‘Hello lambda world’) or sys.exit()) ) widget.pack() widget.mainloop()
В этом примере есть небольшая хитрость: lambda-выражения могут содержать только одно выражение, поэтому здесь используется оператор or, чтобы заставить выполниться два выражения (функция print вызывается первой, а поскольку в Python 3.X она стала функцией, нам не требуется использовать sys.stdout непосредственно).
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011