Python匿名函数,临时使用的函数,用完即回收

前言:

使用def关键字的函数相当于一个创建一个容器空间,随时可以对其调用,lambda关键字创建的函数则是没有名字的,一次性使用即被释放。


匿名函数的定义

语法格式:

方式一 无参匿名函数:
lambda :表达式(函数的返回值)

方式二 有参匿名函数:
lambda 参数1,参数2,...:表达式(函数的返回值)

使用方法

# 方式一:
res = (lambda x,y: x + y)(1,2)
print(res) 
>>> 3

# 方式二:
res = lambda x,y: x + y
res(1,2)
print(res) 
>>> 3

# 不常用法

# "匿名"的本质就是没有名字,这里定义的匿名函数给它们赋予了名字就丧失了意义

搭配if…else使用

取两个值的最大值

# 正常函数写法
def func(x,y):
	if x > y:
		return x
	else:
		return y
res = func(10,20)

# 使用匿名函数写法
func = lambda x,y:x if x > y else y
res = func(10,15)
print(res)
>>> 15

匿名函数与def关键字创建的函数有共同的作用域,但是匿名函数计数为0,引用一次就被释放,所以匿名函数一般用于临时用一次的场景,匿名函数通常与其它函数配合使用。

配合内置函数使用

user_age = {
	'tom':20,
	'jack':18,
	'jams':25,
	'rous':17,
}

为了取得字典内的最大和最小值,我们可以使用内置函数max和min(Python解释器已经定义好的一些功能,供我们随时调用)

max(user_age)
>>> 'tom'
min(user_age)
>>> 'jack'

max和min支持迭代对比值,字典则是拿key进行对比, 而我们想要的是值之间的大小值,那么我们需要进行调整

# 正常写法是
def age_contrast(k):
	return user_age[k]
max(user_age,key=age_contrast)
>>> 'jams'


# 匿名函数的写法

# max会遍历这个字典,取出字典的“人名”交给匿名函数,而后匿名函数返回这个key对应的value,然后将匿名函数的返回值做比较依据,最终拿到最大值的人名
max(user_age,key=lambda k: user_age[k])
>>> 'jams'
min(user_age,key=lambda k: user_age[k])
'rous'

对字典的值进行排序

sorted(user_age,key=lambda k:user_age[k])
>>> ['rous', 'jack', 'tom', 'jams'] # 默认从小到大排序

sorted(user_age,key=lambda k:user_age[k],reverse=True)
>>> ['jams', 'tom', 'jack', 'rous'] # reverse从大到小排序

根据年龄返回信息

student_info = [
    {'name': 'tom', 'age': 20},
    {'name': 'jack', 'age': 18},
    {'name': 'jams', 'age': 25},
    {'name': 'rous', 'age': 17}
]
max(student_info,key= lambda x:x['age']) # 遍历的元素都是字典,对比每个字典的age属性
>>> {'name': 'jams', 'age': 25}

sorted(student_info.items(),key= lambda x:x['age']) # 从大到小排序

技术小白记录学习过程,有错误或不解的地方请指出,如果这篇文章对你有所帮助请点赞 收藏+关注 子夜期待你的关注,谢谢支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值