匿名函数
匿名函数即没有名字的函数,最早出现在LISP语言中,Python对其进行了引用。
匿名函数的作用就是在不丧失代码可读性的前提下为精简代码提供的一种方式,以下是定义匿名函数的语法,通过lambda关键字进行定义。
- 注意!函数不管有名没名,都必须先定义后使用
语法如下:
lambda 形参1, 形参2 ... : 返回值
# ❶ ❷
❶:形参可以有多个,也可以没有
❷:返回值不用跟return,直接写逻辑语句即可,将会自动的把逻辑语句的结果进行返回
定义和使用匿名函数的实际示例,求2个数的和:
res = (lambda x, y : x + y)(1, 2)
print(res)
匿名函数常用于定义一些非常简单的逻辑,不支持多行,因此要尽量写的简洁易懂。
使用方式
为匿名函数取名
匿名函数也可以通过一个标识符进行命名,但是一般都不会这样做:
add = lambda x, y : x + y
res = add(1, 2)
print(res)
# 3
自执行和自销毁
自执行函数即定义了匿名函数之后就立刻加括号调用,这种函数只会运行一次。
并且由于没有标识符的引用绑定关系,故使用完成后就会被GC机制所立即回收掉:
res = (lambda x, y : x + y)(1, 2) # ❶
print(res)
# 3
❶:自执行的匿名函数必须在括号中进行定义
内置函数搭配使用
匿名函数常用于与内置函数进行搭配使用,如下将使用内置函数max()搭配匿名函数求得下列薪资最高的人员名字:
salaries = {
'Ken': 3000,
'Tom': 7000,
'Jack': 2000
}
name = max(salaries, key=lambda k: salaries[k]) # ❶
print(name)
❶:max()函数的key参数可指定1个函数,此时函数的返回结果就是本次求最大值的对比条件,这个例子就是指定薪资作为对比条件
常用搭配函数
lambda表达式与一些函数配合,才能发挥出最大的威力。
Python中出名的诸如map()、filter()、reduce()函数等均来自Lisp语言的设计,它们实在是太方便了,其实说到底一门优秀的语言必定大量借鉴了其他语言的优秀特性。
max()与min()
max()函数用于从1个可迭代对象中返回最大的数据项,而min()是返回最小的,其他都一样。
max()函数签名如下:
def max(*args, key=None):
pass
参数详解:
- args:一个可迭代对象,拥有1个形参
- key:传入1个可调用对象(通常是指函数),指定本次的大小对比方式,默认是根据数据项值本身对比
默认比对是比对的值本身,如果是字典则拿key的值进行比对,以下示