d# python的匿名表达式子的用法
这里围绕9个字来说明这个匿名表达式的用法
- 一个语法
- 三个特性
- 四个用法
一个语法
lambda [arg1 [,arg2,…argn]]:expression
这里其中lambda是Python的预留保留字,具体介绍如下
1.这里的arg是传入参数列表,跟函数的传入参数列表一样。可以传入多个参数。
2.这里的expression指的是对参数的定义。
3.lambda [arg1 [,arg2,…argn]]:expression 是一个函数,我们叫做lambda表达式
三个特性
- lambda函数一般是匿名的: 没有名字的函数。
- lambda函数有输入和输出: 输入时传入参数,输出是根据表达式输入的值
- lambda函数一般功能简单: 实现的功能一目了然,简单的逻辑
#!/usr/bin/python3
# 可写函数说明
sum = lambda arg1, arg2: arg1 + arg2
# 调用sum函数
print ("相加后的值为 : ", sum( 10, 20 ))
print ("相加后的值为 : ", sum( 20, 20 ))
四个用法
由于lambda的语法是固定的,本质上只有一种用法,那就是定义一个lambda函数
在实际种根据lambda函数的应用场景不同,根据这个我们可以将lambda函数用法扩展为这四种:
- 将lambda函数赋值给一个变量,通过这个变量间接调用给该函数
add=lambda x,y:x+y
add(1,2)
#3
- 将lambda函数赋值给其他函数,从而将其他函数lambda函数用该lambda函数替换
time.sleep=lambda x:None
#这样我们再调sleep的方法的时候,就不回执行原有的time函数方法。
3.将lambda函数作为其他函数的返回值,返回给调用者。
return lambda x,y:x+y
#这是一个加法函数,这时候lambda函数实际上是定义在某个函数内部的函数,称之为嵌套函数,我们称之为闭包结构。
4.将lambda函数作为参数传递为其他函数
- filter函数
filer(lambda x: x%3 ==0,[1,2,3])
- sorted函数
sorted([1,23,4,5,6,7,8,9],key=lambda:abs(5-x))
- map函数
map(lambda x :x+1,[1,2,3])
- reduce函数
reduce(lambda(a,b):"{}{}".format(a,b),[1,2,3,4,5,6,7,8,9,10])