Python—-Lmbda 表达式

Python—-Lmbda 表达式

如果一个函数有一个返回值,并且只有一句代码,可以使用 lambda 简化。

lambda 语法

lambda 参数列表 :表达式 

注意:

lambda 表达式的参数可有可无,函数的参数在 lambda 表达式中完全适用。 lambda
表达式能接受任何数量的参数但只能返回一个表达式的值。

快速入门 - 案例讲解

使用自定义函数

def fun():
    return 100
print(fun)    # <function fun at 0x00000222D5E89CA8>
print(fun())  # 100

使用 lambda 表达式 — 匿名函数

#   lambda 参数列表 :表达式
func = lambda : 100
print(func)   # <function <lambda> at 0x0000029DD9769CA8> 返回的是一个函数内存地址
print(func()) # 100  上面说到func存储的是一个函数的内存地址,所以在这里调用该函数(),输出值

需求 2: 实现两数相加的和

使用自定义函数

def two_sum(a,b):
    return a+b
print(two_sum(3,4))

使用 lambda 表达式

# 定义一个匿名函数,计算两个数的和
sum = lambda a, b: a + b
# 调用匿名函数,并打印结果,传入数字3和4作为参数
print(sum(3, 4))

通过上述的案例我们可以看到 lambda 表达式的简便性,可以将多行的函数缩短为一行,大大减少了存储的内存。

注意:

  1. 利用变量存储的 lambda 表达式,实际上该变量存储的就是 lambda 的内存地址,通过该返回值可以看出 lambda 表达式同样是一个函数,所以 lambda
    表达式又称为匿名函数,只是呈现方式更加简便。既然是函数对象,在输出其返回值的时候就需要我们对其进行调用 — 变量名 (函数名)()

lambda 表达式的参数形式

无参数类型

# 定义一个返回输入参数的lambda函数
fun1 = lambda a : a
# 调用fun1函数,并打印返回结果,传入字符串'Hello World!'作为参数
print(fun1('Hello World!'))

用于直接返回值直接调用函数即可!

一个参数类型

fun1 = lambda a : a
print(fun1('Hello World!')) /Hello World!

两个参数类型

# 定义一个lambda函数,接收两个参数a和b,返回它们的和
fun2 = lambda a,b : a+b
# 调用fun2函数,并打印结果,此处传入4和5作为参数,将返回它们的和(即9)
print(fun2(4,5))  

默认参数类型

# 定义一个lambda函数,接收三个参数a, b, c,其中c有默认值100,返回三个参数的和
fun3 = lambda a, b, c=100 : a+b+c
# 调用fun3函数,只传入两个参数10和20,c使用默认值100,打印返回结果(此时计算10+20+100)
print(fun3(10,20))  
# 调用fun3函数,传入三个参数10、20和30,打印返回结果(此时计算10+20+30)

默认参数又称为缺省值,就是在调用函数的时候可以传入对应的值,也可以不传入。不传入值则将使用定义的默认值;传入,则将使用传入的值

可变参数类型: *args

# 定义一个lambda函数,接收任意数量的位置参数,并返回这些参数组成的元组
fun4 = lambda *args : args
# 调用fun4函数,并打印结果,此处传入10, 20, 30作为参数,将返回这些参数组成的元组(10, 20, 30)
print(fun4(10,20,30))

*args 接收的是不定长的未知参数,返回的类型为元组

可变参数类型:**kwargs

# 定义一个lambda函数,接收任意数量的关键字参数,并返回这些参数组成的字典
fun5 = lambda **kwargs : kwargs
# 调用fun5函数,并打印结果,此处传入name='python'和age=20作为关键字参数,将返回这些参数组成的字典{'name': 'python', 'age': 20}
print(fun5(name = 'python',age = 20))
# 再次调用fun5函数,并打印结果,此次除了传入name和age,还传入了sex='男'作为关键字参数,将返回包含这三个参数的字典{'name': 'python', 'age': 20, 'sex': '男'}
print(fun5(name = 'python',age = 20,sex = '男'))

在这段代码中,fun5 是一个 lambda 匿名函数,它使用 **kwargs 语法来接收任意数量的关键字参数。这些关键字参数在函数内部被组织成一个字典,其中参数的名称作为键,参数的值作为字典中相应键的值。这个字典随后被函数返回。

第一次调用 print(fun5(name = ‘python’,age = 20)) 时,我们传入了两个关键字参数 name 和 age,函数返回了包含这两个参数的字典 {‘name’: ‘python’, ‘age’: 20},并将其打印出来。

第二次调用 print(fun5(name = ‘python’,age = 20,sex = ‘男’)) 时,我们除了传入 name 和 age 参数外,还增加了一个 sex 参数。函数返回了包含这三个参数的字典 {‘name’: ‘python’, ‘age’: 20, ‘sex’: ‘男’},并再次将其打印出来。

我在每次函数调用的旁边添加了行间注释,详细解释了每次调用的参数、函数的返回值以及最终被打印出来的内容。

lambda 表达式的应用

带判断的 lambda 表达式

# 定义一个lambda函数,接收两个参数a和b,如果a大于b则返回a,否则返回b
fun = lambda a,b : a if a>b else b
# 调用fun函数,传入参数5和4,由于5大于4,因此返回5并打印出来
print(fun(5,4))
# 5

列表信息按照字典的 key 值排序

students = [
    {'name':'TOM','age':20},
    {'name':'ROSE','age':19},
    {'name':'Jack','age':22}
]
 
# 按照name升序排列
# 使用sort方法和lambda函数,以每个字典的'name'键对应的值为排序依据
students.sort(key=lambda x:x['name'])
print(students)
 
# 按照name降序排列
# 在sort方法中加入reverse=True参数,实现降序排列
students.sort(key=lambda x:x['name'],reverse=True)
print(students)
 
# 按照age值升序排列
# 使用sort方法和lambda函数,以每个字典的'age'键对应的值为排序依据
students.sort(key=lambda x:x['age'])
print(students)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值