python学习之匿名函数

时间:2021-02-04 19:17:37

含义

不再使用def 语句定义函数。

为了解决一些功能简单的需求而使用一句话函数解决,

优点

  • 使用python写一些脚本时,使用匿名函数可以省去定义函数得过程,让代码更精简;
  • 对于一些抽象的,不会被别的地方重复使用的函数,使用lambda可以省去函数命名的过程;
  • 使代码更易理解

格式

python学习之匿名函数

函数名 = lambda 参数 : 返回值


#定义多个参数时,使用逗号隔开

#调用时,直接函数名(参数)即可

实例

  • 单个参数匿名函数
def calc(n):
    return n**n
print(calc(10))

上面的代码使用匿名函数为:

calc = lambda n:n**n
print(calc(10))
  • 多个参数匿名函数
calc = lambda a,b,c:a*b*c
print(calc(1,2,3))
  • 对字典排序
infors = [{"name":"wang","age":11},{"name":"xiaoming","age":20},{"name":"banzhang","age":10}]
#根据age对字典排序
infors.sort(key=lambda x:x['age'])
print(infors)

#执行结果:
#[{'name': 'banzhang', 'age': 10}, {'name': 'wang', 'age': 11}, {'name': 'xiaoming', 'age': 20}]

  • lambda与其他功能函数合用
#注:map函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的饿list返回。

res = map(lambda x:x**2,[1,5,7,4,8])
for i in res:
    print(i)
  • 把lambda当成一个变量
#把lambda当成一个变量
def test(a,b,func):
    result = func(a,b)
    return result
num = test(11,22,lambda x,y:x+y)
print(num)