概述
匿名函数,顾名思义即没有名称的函数,和def定义的函数的最大区别在于匿名函数创建后返回函数本身(即匿名函数不需要return来返回值),表达式本身结果就是返回值,而def创建后则赋值给一个变量名,在python中,我们利用关键词lambda创建匿名函数,以下是匿名函数lambda表达式的形式:
lambda arg1,arg2,.....argn:expression
以下为一些lambda的特点:
- lambda 是一个表达式,而不是一个语句,即我们可以在任何可以使用表达式的场景一样使用lambda。
- lambda 的主体也是一个表达式,即和def定义的函数一样,lambda也有函数主体,不过lambda的主体仅仅是一个表达式,所以其使用的功能受到较大的限制。
lambda使用
无参匿名函数
1
2
3
4
5
6
7
8
|
# 可以将lambda直接传递给一个变量,像调用一般函数一样使用
b = lambda :true
print (b())
# 等价于
def bf():
return true
print (bf())
|
示例结果:
true
true
有参匿名函数
支持多个参数
参数无默认值
1
2
3
4
|
two_sum = lambda x, y: x + y
# 等同于:
def two_sum(x, y): return x + y
print (two_sum( 1 , 2 ))
|
示例结果:
3
参数带默认值
1
2
3
4
|
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后面直接传递参数:
1
2
|
two_sum = ( lambda x, y: x + y)( 3 , 4 )
print (two_sum)
|
示例结果:
7
嵌套使用
将lambda嵌套到普通函数中,lambda函数本身做为return的值,构建简单的闭包
1
2
3
4
5
|
def sum (x):
return lambda y: x + y
sum_with_100 = sum ( 100 )
result = sum_with_100( 200 )
print (result)
|
示例结果:
300
一些使用实例
1. 结合三元表达式求两值中最小值
1
2
|
lower = lambda x,y: x if x<y else y
print (lower( 7 , 100 ))
|
实例结果:
7
2. 对字典某一键值进行排序
1
2
3
4
|
d = [{ "order" : 3 },{ "order" : 1 },{ "order" : 2 }]
# 根据order键值排序
d.sort(key = lambda x:x[ 'order' ])
print (d)
|
实例结果
[{'order': 1}, {'order': 2}, {'order': 3}]
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。
原文链接:https://juejin.im/post/5cdd63926fb9a032086df43e