Я пришел из мира SQL, и я новичок в этом. Я нашел на w3shools.com похожий код:
def myfunc(n, m):
return lambda a : a * n * m
mydoubler = myfunc(2, 6)
print(mydoubler(15))
Я не могу понять, как параметр a
, который, как я полагаю, равен "15" в вызове, становится доступным для лямбды. Я искал и не смог найти описание логической и программной парадигмы.
3 ответа
Лямбда-функция является анонимной функцией, это означает, что лямбда-выражение само по себе является функцией, но является встроенным. здесь вы создали функцию, которая будет возвращать лямбда-выражение, вычисляющее произведения a, n и m, поэтому возвращаемое значение будет таким. мы знаем, что когда мы возвращаем функцию, мы можем сохранить то, что мы вернули, в переменной, в нашем случае мы вернули лямбда-функцию, поэтому вам нужно ввести значение. если не понятно, спрашивай
Лямбда-функция — это функция, но без имени. Единственная разница в том, как выглядит определение хо. Ваш вырезанный код может быть переведен на:
def myfunc(n, m):
def some_func(a):
return a * n * m
return some_func
mydoubler = myfunc(2, 6)
print(mydoubler(15))
И результат был бы тот же. Из официальной документации по Python Лямбда-выражения:
Как и определения вложенных функций, лямбда-функции могут ссылаться на переменные из содержащей их области видимости.
Поэтому для функции доступны значения n
и m
. Значение a
передается при выполнении mydoubler
.
Это подробный ответ:
Прежде всего, вы создали функцию myfunc, которая требует 2 аргумента "n" и "m". то вы вернете лямбда-функцию, которая принимает аргумент «а» и возвращает произведение «а», «n» и «m». затем вы объявили переменную mydoubler, значение которой является возвращаемым значением myfunc, которое является этой лямбдой. представьте, что mydoubler = lambda a: a * 2 * 6. и, наконец, вы напечатали возвращаемое значение mydoubler, которое является функцией, а аргумент a равен 15. если вы не поняли формат лямбда для mydoubler, вот оно, но как обычно функция: def mydoubler(a): вернуть * 2 * 6 не забудьте, 2 это значение n и 6 это значение m
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.