Подробное объяснение и пример использования анонимной функции Python3 lambda

Python
Подробное объяснение и пример использования анонимной функции Python3 lambda

Обзор

Анонимная функция, как следует из названия, — это функция без имени.Самая большая разница между анонимной функцией и функцией, определенной в def, заключается в том, что анонимная функция возвращает саму функцию после ее создания (то есть анонимная функция выполняет не нужно возвращать значение, чтобы вернуть значение), а результатом самого выражения является возвращаемое значение, и после создания определения присваивается имя переменной, в Python мы используем ключевое словоlambdaСоздайте анонимную функцию, ниже приведена анонимная функцияlambdaФорма выражения:lambda arg1,arg2,.....argn:expressionНиже приведены некоторые характеристики лямбда-выражений:

  1. Лямбда — это выражение, а не оператор, т. е. мы можем использовать лямбду в любой ситуации, когда можно использовать выражение.
  2. Тело лямбды также является выражением, то есть, как и функция, определенная def, лямбда также имеет тело функции, но тело лямбды — это просто выражение, поэтому его функции ограничены.

использование лямбды

Анонимная функция без аргументов

# 可以将lambda直接传递给一个变量,像调用一般函数一样使用
B = lambda :True
print(B())

# 等价于
def BF():
    return True
print(BF())

Пример результата:

True
True

Анонимная функция с параметрами

Поддержка нескольких параметров

Параметр не имеет значения по умолчанию
two_sum = lambda x, y: x + y
# 等同于:
def two_sum(x, y): return x + y
print(two_sum(1,2))

Пример результата:

3
параметр со значением по умолчанию
sum_with_100 = lambda x, y=100: x + y
# 等同于:
def sum_with_100(x, y=100): return x + y
print(sum_with_100(200))

Пример результата:

300

Передать параметры сзади

В предыдущем примере мы присваиваем переменную анонимной лямбда-функции и передаем параметры аналогично функции, определенной def.Мы можем передавать параметры сразу после лямбда-выражения:

two_sum = (lambda x, y: x + y)(3, 4)
print(two_sum)

Пример результата:

7

вложенное использование

Вложите лямбда-выражения в обычные функции и используйте саму лямбда-функцию в качестве возвращаемого значения для построения простого闭包

def sum(x):
    return lambda y: x + y
sum_with_100 = sum(100)
result = sum_with_100(200)
print(result)

Пример результата:

300

некоторые варианты использования

1. Объедините троичные выражения, чтобы найти минимальное из двух значений.

lower = lambda x,y: x if x<y else y
print(lower(7,100))

Пример результата:

7

2. Сортировать ключевое значение словаря

d = [{"order":3},{"order":1},{"order":2}]
# 根据order键值排序
d.sort(key=lambda x:x['order']) 
print(d)

Результат экземпляра

[{'order': 1}, {'order': 2}, {'order': 3}]