Python学习教程:Python3匿名函式lambda详解及使用示例
概述
匿名函式,顾名思义即没有名称的函式,和def定义的函式的最大区别在于匿名函式建立后返回函式本身(即匿名函式不需要return来返回值),表示式本身结果就是返回值,而def建立后则赋值给一个变数名,在Python中,我们利用关键词lambda建立匿名函式,以下是匿名函式lambda表示式的形式:
lambda arg1,arg2,.....argn:expression
以下为一些lambda的特点:
lambda 是一个表示式,而不是一个语句,即我们可以在任何可以使用表示式的场景一样使用lambda。
lambda 的主体也是一个表示式,即和def定义的函式一样,lambda也有函式主体,不过lambda的主体仅仅是一个表示式,所以其使用的功能受到较大的限制。
lambda使用
无参匿名函式
# 可以将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
从后面传参
之前的示例我们将lambda匿名函式赋值一个变数,通过类似def定义的函式的方式传参,我们可以在lambda后面直接传递引数:
two_sum = (lambda x, y: x + y)(3, 4)
print(two_sum)
示例结果:
7
巢状使用
将lambda巢状到普通函式中,lambda函式本身做为return的值,构建简单的闭包
sum_with_100 = sum(100)
result = sum_with_100(200)
print(result)
示例结果:
300
一些使用例项
1. 结合三元表示式求两值中最小值
lower = lambda x,y: x if xprint(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}]
关于匿名函式lambda今天跟大家分享这么多,应该还是比较好理解的!更多的Python学习教程知识点会继续跟大家分享,或者说大家有什么想学的Python章节和知识点也可以留言哦!