python——匿名函数

什么是匿名函数?
  匿名函数就是没有名字的函数

为什么要有匿名函数?
  因为随着程序代码的增多对于函数起名比较麻烦,并且有些函数只调用一次,那么这种情况,用匿名函数比较合适


#如何定义一个匿名函数?

一般函数:
def test(x,y):
    return x + y
res = test(1,2)
print(res)
>>> 3 匿名函数: res = (lambda x,y: x+y)(1,2) print(res)
>>> 3

语法
lambda 函数的语法只包含一个语句,如下:

  lambda [arg1 [,arg2,.....argn]]:expression

  # lambda 参数列表:return [表达式] 变量
  # 由于lambda返回的是函数对象(构建的是一个函数对象),所以需要定义一个变量去接收

实例一
  # 可写函数说明
    sum = lambda x, y: x + y;
  # 调用sum函数

print ("相加后的值为 : ", sum( 10, 20 ))
>>> 30
print ("相加后的值为 : ", sum( 20, 20 )) 
>>> 40

实例二
  对字典排序

infos = [
{'name':'zhangsan','age':23},
{'name':'lisi','age':24},
{'name':'wangwu','age':12},
{'name':'zhaoliu','age':33},
{'name':'liuer','age':23}
]
infos.sort(key=lambda x:x['age'])
print(infos)
>>> [{'name': 'wangwu', 'age': 12}, {'name': 'zhangsan', 'age': 23}, {'name': 'liuer', 'age': 23}, {'name': 'lisi', 'age': 24}, {'name': 'zhaoliu', 'age': 33}]

实例三

把lambda当一个变量

def test(a,b,func):
    result = func(a,b)
    return result

num = test(11,22,lambda x,y:x+y)
print(num)
>>> 33

匿名函数优点
  • 使用Python写一些脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。

  • 对于一些抽象的,不会被别的地方再重复使用的函数,有时候函数起个名字也是个难题,使用lambda不需要考虑命名的问题

  • 使用lambda在某些时候然后代码更容易理解

 

原文地址:https://www.cnblogs.com/twoo/p/11677666.html