Серия, в которой я пытаюсь взять концепцию программирования на Python и объяснить ее с точки зрения простого смертного за 5 минут чтения или меньше!

Первоначально опубликовано в блоге Coding Duck: ccstechme.com/coding-duck-blog

Сегодняшняя тема? Лямбда функции! Для начала давайте рассмотрим официальное определение того, что основная команда Python называет лямбда-функцией (иначе называемой лямбда-выражением). По документам:

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

Супер ясно, верно? Нет? Ты не один так думаешь. Для многих программистов Lambdas — это функции, которые они знают, как использовать, но на самом деле не понимают, что они на самом деле делают. Дело в том, что лямбда-функция работает как обычная функция, просто она короче и временнее. Как нелепо временно. Сразу приходят на ум фразы «одноразовый» и «выбросить». Давайте посмотрим на пример. Ниже приведена традиционная функция, которая берет число и возводит его в куб (в степени 3 или число*число*число).

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

Громоздкий, но легко читаемый способ:

aaaaи очень pythonic, однострочный способ с использованием понимания списка:

Итак, теперь у нас есть список чисел и список чисел в кубе. Какое это имеет отношение к лямбдам? Могут ли они сделать забавный список вещей тоже? Да, могут, как видно здесь:

Но использование списков, как правило, быстрее, поскольку наборы данных становятся больше, поэтому они предпочтительнее для этого конкретного приложения. Итак, что хорошего в лямбда-выражениях и что они на самом деле делают???

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

Подумайте об этом так: скажем, вы плотник, строящий дом, но очень похожий на странный дом, где гвозди иногда случайно выпадают из дерева, как будто их никогда не прибивали. в большинстве случаев вы ходили по стройплощадке в поисках выпавших гвоздей. Увидев такую, вы достаете свой верный молоток из-за пояса, прямо там, где он всегда лежит, и забиваете гвоздь пятью ударами молотка. Это использование обычной функции.

Лямбда была бы, если бы вы ходили по дому и увидели 50 вышедших подряд гвоздей. Вы могли забить их всех своим 5-ударным молотом. Но в прицепе также есть молоток, который забивает каждый гвоздь за 2 удара. Проблема в том, что трейлер находится в 100 ярдах, и, поскольку это суперспециальный молот, его нужно всегда хранить в трейлере, когда он не используется.

Это имеет больше смысла? Обычная функция при инициализации помещается в место, где интерпретатор Python может держать ее под рукой. Однако лямбда-выражение создается в момент, когда это необходимо, и удаляется в момент, когда это делается. Таким образом, несмотря на то, что у него есть преимущество в том, что он может сделать 10 строк кода в 20 символах или около того, вам придется «взять его из трейлера» по любой причине, кроме особого случая использования, когда будет необходимо делать ту же задачу быстро, а потом делать ее за день не имеет особого смысла. В конечном счете, строк кода, которые вы сохраняете, недостаточно, чтобы оправдать время, необходимое для того, чтобы «идти к трейлеру» каждый раз, когда вы видите незакрепленный гвоздь. Для этого просто используйте свой старый верный «молоток» в обычной функции.

Итак, я надеюсь, что это разъясняет вам лямбда-функции! Если у вас есть какие-либо вопросы, пожалуйста, оставьте комментарий, чтобы я мог внести немного ясности в то, что я, возможно, просмотрел (у меня есть только 5 минут). Как всегда, выходите и стройте, стройте, стройте! Никогда не думайте, что вы не можете научиться тому, как взять текстовый редактор и немного времени и изменить мир. Со всем этим дерьмом, делающим мир несчастным, и со всеми технологиями, созданными просто для того, чтобы помочь достаточному количеству людей тратить достаточно времени, чтобы сделать разработчиков богатыми, миру нужны вы и все, кто желает улучшить себя и мир, печатая эти смешные фразы в командную строку.