Люди уже предоставили код, поэтому я просто перечислю несколько мест, где они могут быть полезны.
Скажем, у вас есть код GUI. Обычно, для чего-то вроде обработчика нажатия кнопки, вы должны предоставить функцию, которая будет вызываться при нажатии этой кнопки. Однако, скажем, все, что должна делать эта функция, это что-то простое, например, всплывающее окно с сообщением или какое-то поле. Допустим, у вас есть десятки этих кнопок в вашем коде. Без анонимных функций у вас будет множество функций с именами «OnButton1Click», «OnExitButtonClick» и т. Д., Которые, вероятно, загромождают ваш код ... или вы можете создавать анонимные функции, которые немедленно присоединяются к этим событиям. больше не о них беспокоиться.
Другое использование - функциональное программирование. Скажем, у вас есть список номеров. Вы хотите вернуть только те числа, которые делятся на три. Вероятно, есть функция с именем filter
, которая принимает функцию, которая возвращает логическое значение и список, и возвращает новый список, содержащий только те элементы в первом списке, которые при передаче в функцию возвращали значение True. Пример:
filter(isOdd, [1, 2, 3, 5, 6, 9, 10]) --> [1, 3, 5, 9]
Было бы раздражающим быть вынужденным определять функцию "isDivisibleByThree", а затем передавать ее в фильтр, так что другим использованием анонимных функций здесь было бы просто быстро создать функцию, которая вам больше нигде не нужна, и передать ее фильтровать.