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