文章目录


Python 之 lambda 表达式

一、lambda的应用场景

如果一个函数有一个返回值,并且只有一句代码,可以使用lambda简化。说实话这定义简单到离谱~

【Python 】Lambda 表达式_python


二、lambda语法

lambda

注意:

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

返回顶部


三、快速入门 — 案例讲解

需求1:函数 返回值100

1.使用函数实现

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

2.使用lambda表达式 — 匿名函数

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

【Python 】Lambda 表达式_参数类型_02

返回顶部


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

1.使用自定义函数

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

2.使用lambda表达式

sum = lambda a,b : a+b
print(sum(3,4))

【Python 】Lambda 表达式_python_03

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

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

返回顶部


四、lambda表达式的参数形式

1.无参数类型

fun = lambda : 100
print(fun())

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

2.一个参数类型

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

3.两个参数类型

fun2 = lambda a,b : a+b
print(fun2(4,5)) //9

4.默认参数类型

fun3 = lambda a, b, c=100 : a+b+c
print(fun3(10,20)) // 130
print(fun3(10,20,30)) // 60

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

5.可变参数类型: *args

fun4 = lambda *args : args
print(fun4(10,20,30))

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

6.可变参数类型:**kwargs

fun5 = lambda **kwargs : kwargs
print(fun5(name = 'python',age = 20))
print(fun5(name = 'python',age = 20,sex = '男'))

接收不定长的关键字参数,返回的是一个字典

【Python 】Lambda 表达式_参数类型_04

返回顶部


五、lambda表达式的应用

1.带判断的lambda表达式

fun = lambda a,b : a if a>b else b
print(fun(5,4))

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

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)

【Python 】Lambda 表达式_参数类型_05

返回顶部