【lambda函数的详细用法】——如桃花来——日常记录

lambda的应用场景:

  • 如果函数有一个返回值,并且只有一句代码,这时候可以用lambda函数进行简化写法。
  • lambda函数又称匿名函数,不可复用,只能当前位置使用,好处是简洁方便,不用特意创建一个函数。

lambda的语法:

 变量名 = lambda 参数列表:表达式
  • lambda表达式的参数可有可无,但表达式一定要有,函数的参数在lambda表达式中完全适用
  • lambda表达式能接收任何数量的参数,但只能返回一个表达式的值
#举个例子:
def fn():
    return "我好帅"

print(fn)
print(fn())

fn1 = lambda :"我也好帅"#这里就是省略了参数
print(fn1)
print(fn1())

效果展示:
在这里插入图片描述

注意: 直接打印lambda表达式,输出的是lambda的id地址(内存地址)

#举第二个例子,这次我们要求计算a+b的值
def add(a,b):
	return a+b
print(add(1,2))#结果为3



result = lambda a,b:a+b
print(result(1,2))#结果为3

怎么样,经过上述的例子,我们是不是会发现lambda函数对于简易函数的实现非常方便。

lambda函数的参数形式:

1. 无参数:

#举个例子:
result = lambda:100
print(result())
#返回结果为100

注意: lambda身为匿名函数,调用的时候要带括号。

2. 一个参数:

#举个例子:
fn = lambda a:a
print(fn(1))#输出结果为1

3. 默认参数:

#举个例子:
fn = lambda a,b,c=100:a+b+c
print(fn(200,300))#c默认为100了。输出结果为600
print(fn(200.300,200))#c被重新赋值了200,输出结果为700

4. 可变参数:*args:

#举个例子:
fn = lambda *args:args
print(fn(1,2,3))
#输出结果为:(1,2,3)

我们可以看到,args是可以返回任意数量参数的可变参数,且返回的形式是元组

5. 不可变参数:**kwargs:

#举个例子:
fn = lambda **kwargs:kwargs
print(fn(name = "Tom",sex = "男"))
#输出结果为:{'name': 'Tom', 'sex': '男'}

**注意:**当以字典形式传参,我们再给字典赋值时要以== = 号的形式输入。而不是以 :===号的方式,否则会报错。

lambda函数的应用:

1. 带判断的lambda:

#举个例子:
fn = lambda a,b:a if a>b else b
print(fn(100,200))#输出结果为:200
print(fn(200,100))#输出结果为:200

首先冒号前面是参数,if前面的a是满足a>b的情况下返回的结果,而b是else的情况返回的结果。

students=[{'name':'TOM','age':20},{'name':'ROSE','age':19},{'name':'Jack','age':22}]
#按name值升序排列
students.sort(key=lambda x:x['name'])
print(students)
#按name值降序排列
students.sort(key=lambda x:x['name'],reverse=True)
print(students)
#按age值升序排列
students.sort(key=lambda x:x['age'])
print(students)

reverse的中文含义是倒置,是否倒置,默认是False即升序排列。True为倒置,是降序排列。简记:降T

关于这个lambda的写法,我们可以这样理解。它取了一个可遍历对象的元素,然后对元素进行选择。

#举个例子:
students = [("Tom",1,"a"),("Job",5,"b"),("Penny",3,"c")]
#key表示的是按什么东西来排序
students.sort(key=lambda x:x[0])#选中了元素中的下标0的项,也就是名字
print(students)
students.sort(key=lambda x:x[1])#选中了元素中的下标1的项,也就是数字
print(students)
students.sort(key=lambda x:x[2])#选中了元素中的下标2的项,也就是字母
print(students)

在这里插入图片描述

跟map函数联动:

简单介绍下map函数(),它的用处是将作用函数依次运用到可便利对象的身上。

map(function,iterable)
  • function是作用的函数,iterable是可遍历的对象。
a = map(lambda x:x**2,[1,2,3,4,5])
print(map(lambda x:x**2,[1,2,3,4,5]))
print(list(a))

效果展示:
在这里插入图片描述

在python3中直接打印map函数返回的是一个迭代器的内存地址,需要使用list进行转换才可以输出

函数屏蔽功能:

有时候我们可以利用lambda函数来屏蔽一个函数的功能

  • 函数有参数的屏蔽情况:
#举个例子:
import time
start_time = time.time()
time.sleep(3)
end_time = time.time()
print(f"现在过去了{end_time-start_time}秒")


time.sleep = lambda x:None #返回值变成了None
start_time = time.time()
time.sleep(3)##返回值变成了None,什么也不做
end_time = time.time()
print(f"现在过去了{end_time-start_time}秒")

呈现效果:
在这里插入图片描述

函数屏蔽成功

  • 函数无参数时的屏蔽情况
#举个例子:
import time
time.time = lambda :None #无参数屏蔽函数
start_time = time.time()
time.sleep(3)
end_time = time.time()
print(f"现在过去了{end_time-start_time}秒")

呈现效果
在这里插入图片描述

函数屏蔽成功

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

如桃花来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值