在Python中,lambda作为一个关键字,作为引入表达式的语法。想比较def函数,lambda是单一的表达式,而不是语句块.
[TOC]
匿名函数的特点
所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。
- lambda 只是一个表达式,函数体比 def 简单很多。
- lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
- lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
- 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
匿名函数的语法
lambda 函数的语法只包含一个语句,如下:lambda [arg1 [,arg2,.....argn]]:expression
# lambda 参数列表:return [表达式] 变量
# 由于lambda返回的是函数对象(构建的是一个函数对象),所以需要定义一个变量去接收
匿名函数的优点
使用Python写一些脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。
对于一些抽象的,不会被别的地方再重复使用的函数,有时候函数起个名字也是个难题,使用lambda不需要考虑命名的问题
使用lambda在某些时候然后代码更容易理解
匿名函数的应用
定义简单函数
# sum加法函数 |
结果为 : 30.0 |
排序中的应用
infors = [{"name":"宋长武","age":23},{"name":"刘洋","age":22}, |
[{'name': '刘洋', 'age': 22}, {'name': '宋长武', 'age': 23}, {'name': '马云伟', 'age': 23}, {'name': '施名阳', 'age': 24}] |
函数当作变量
def test(a,b,func): |
结果为 : 33.0 |