一、Lambda 表达式
概念:是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包。
原因:函数名并没有实际的意义,为了简便,所以推出了lambada表达式的语法糖!
注意:与其它语言不同,Python的Lambda表达式的函数体只能有单独的一条语句,也就是返回值表达式语句!
理解:匿名函数的等价形式来理解lambada表达式!
注:虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖",由编译器帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能。建议不要乱用,因为这就和某些很高级的黑客写的代码一样,简洁、难懂,、难以调试!
二、语法
<函数对象名> = lambda <形式参数列表>:<表达式>
匿名函数的作用
1.不用命名,直接实现简单功能;但是如果只是"单个调用"的话,还是要命名变量
2.让代码更加简洁
三、练习
"""
语法说明:匿名函数的关键字为 lambda
冒号前面是 形参;冒号后面是返回值
"""
from functools import reduce
#(1)累加
# def add(x,y):
# return x+y
# print(reduce(add,range(10)))
print(reduce(lambda x,y:x+y,range(10)))
#(2)阶乘
# def mypow(x):
# return x**2
print(list(map(lambda x:x**2,range(5))))
#(3)偶数
# def isood(num):
# return num%2 ==0
print(list(filter(lambda x:x%2==0,range(100))))
练习2:高级
# 需求:求阶乘
f = lambda func, n: 1 if n == 0 else n * func( func, n - 1 )
print(f(f,4)) #24
练习3:无参
t = lambda: True
print(t()) #True