匿名函数lambda:是指一类无需定义标识符(函数名)的函数或子程序。所谓匿名函数,通俗地说就是没有名字的函数,lambda函数没有名字,是一种简单的在同一行中定义函数的方法。

lambda函数一般功能简单:单行expression决定了lambda函数不可能完成复杂的逻辑,只能完成非常简单的功能。由于其实现的功能一目了然,甚至不需要专门的名字来说明。

lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值。

lambda表达式只允许包含一个表达式,不能包含复杂语句,该表达式的运算结果就是函数的返回值

lambda函数实际生成了一个lambda对象。

lambda表达式的基本语法如下:

lambda arg1,arg2,arg3… :<表达式>

arg1/arg2/arg3为函数的参数(函数输入),表达式相当于函数体,运算结果是表达式的运算结果。

例如:

lambda x, y: x*y;函数输入是x和y,输出是它们的积x*y

lambda:None;函数没有输入参数,输出是None

lambda *args: sum(args); 输入是任意个数的参数,输出是它们的和(隐性要求是输入参数必须能够进行加法运算)

lambda **kwargs: 1;输入是任意键值对参数,输出是1

#测试lambda函数

由于lambda语法是固定的,其本质上只有一种用法,那就是定义一个lambda函数。在实际中,根据这个lambda函数应用场景的不同,可以将lambda函数的用法扩展为以下几种:

1.将lambda函数赋值给一个变量,通过这个变量间接调用该lambda函数。

例如,执行语句add=lambda x, y: x+y,定义了加法函数lambda x, y: x+y,并将其赋值给变量add,这样变量add便成为具有加法功能的函数。例如,执行add(1,2),输出为3。

2.将lambda函数赋值给其他函数,从而将其他函数用该lambda函数替换。

例如,为了把标准库time中的函数sleep的功能屏蔽(Mock),我们可以在程序初始化时调用:time.sleep=lambda x:None。这样,在后续代码中调用time库的sleep函数将不会执行原有的功能。例如,执行time.sleep(3)时,程序不会休眠3秒钟,而是什么都不做。

3.将lambda函数作为参数传递给其他函数。

函数的返回值也可以是函数。例如return lambda x, y: x+y返回一个加法函数。这时,lambda函数实际上是定义在某个函数内部的函数,称之为嵌套函数,或者内部函数。对应的,将包含嵌套函数的函数称之为外部函数。内部函数能够访问外部函数的局部变量,这个特性是闭包(Closure)编程的基础,在这里我们不展开。

部分Python内置函数接受函数作为参数,典型的此类内置函数有这些:

filter函数 此时lambda函数用于指定过滤列表元素的条件。例如filter(lambda x: x % 3 == 0, [1, 2, 3])指定将列表[1,2,3]中能够被3整除的元素过滤出来,其结果是[3]。

sorted函数 此时lambda函数用于指定对列表中所有元素进行排序的准则。例如sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=lambda x: abs(5-x))将列表[1, 2, 3, 4, 5, 6, 7, 8, 9]按照元素与5距离从小到大进行排序,其结果是[5, 4, 6, 3, 7, 2, 8, 1, 9]。

map函数 此时lambda函数用于指定对列表中每一个元素的共同操作。例如map(lambda x: x+1, [1, 2,3])将列表[1, 2, 3]中的元素分别加1,其结果[2, 3, 4]。

reduce函数 此时lambda函数用于指定列表中两两相邻元素的结合条件。例如reduce(lambda a, b: '{}, {}'.format(a, b), [1, 2, 3, 4, 5, 6, 7, 8, 9])将列表 [1, 2, 3, 4, 5, 6, 7, 8, 9]中的元素从左往右两两以逗号分隔的字符的形式依次结合起来,其结果是'1, 2, 3, 4, 5, 6, 7, 8, 9'。

另外,部分Python库函数也接收函数作为参数,例如gevent的spawn函数。此时,lambda函数也能够作为参数传入。

C#中public函数的用法_python中的lambda函数用法相关推荐

  1. python中print的用法_Python中print函数简单使用总结

    Python中print函数简单使用总结 print函数是Python的入门,每一个学习python的人都绕不开这个函数,下面介绍一下这个函数的用法. 打开电脑,选择python软件,下面选择pyth ...

  2. python isalpha函数用法_python中string模块各属性以及函数的用法

    任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产环境还是面试考验都要面对字符串的操作. python的字符串操作通过2部分的方法函数基本上就可以解决所有的字符串操作需求 ...

  3. python中如何查一个函数的用法_Python常见内置函数用法(三)

    本文作者:孙雪丽 文字编辑:周聪聪 技术总编:张学人重大通知!!!2019年6月22日至24日在河南郑州举行Stata编程技术特别训练营,招生工作已经圆满结束.另外爬虫俱乐部将于2019年7月5日至7 ...

  4. python 遍历函数用法_python中enumerate函数遍历元素用法分析

    本文实例讲述了python中enumerate函数遍历元素用法.分享给大家供大家参考,具体如下: enumerate函数用于遍历序列中的元素以及它们的下标 示例代码如下: i = 0 seq = [' ...

  5. python map用法_Python中 map()函数的用法详解

    python map()函数问题 使用map()函数生成一个值D但是检测D的长度时,只能测一次,一次之后D似不知道你的dataSet 是什么数据,是否是从数据库取出来的结果游标, 如果是的 那么dat ...

  6. python正则findall函数的用法_python中正则表达式 re.findall 用法

    python中正则表达式 re.findall 用法 Python 正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了r ...

  7. python中symbols函数用法_Python中偏函数用法示例

    本文实例讲述了Python中偏函数用法.分享给大家供大家参考,具体如下: python中偏函数 当一个函数有很多参数时,调用者就需要提供多个参数.如果减少参数个数,就可以简化调用者的负担. 比如,in ...

  8. python中divmod函数的用法_Python中divmod函数的用法

    Python中divmod函数的用法,语言,余数,是一种,面向对象,函数 Python中divmod函数的用法 Python中divmod函数的用法 在Python中divmod函数的作用是把除数和余 ...

  9. python中chr的用法_python中chr()函数和ord()函数的用法

    原博文 2018-06-11 21:52 − 一,chr()函数 格式:Chr(<数值表达式>) 说明:函数返回值类型为String,其数值表达式值取值范围为0~255. 例如:Print ...

  10. python中sorted函数逆序_Python中sorted函数的用法(转)

    [Python] sorted函数 我们需要对List.Dict进行排序,Python提供了两个方法 对给定的List L进行排序, 方法1.用List的成员函数sort进行排序,在本地进行排序,不返 ...

最新文章

  1. 超详细!百度富媒体检索比对系统的关键技术
  2. 实例3:按部门统计工资人数
  3. HTML 5 的自定义 data-* 属性和jquery的data()方法的使用
  4. C#中控制线程池的执行顺序
  5. 使用numpy出现DeprecationWarning: The normed argument is ignored when density is provided. 解决方法忽略警告的方法
  6. 开源软件执照检查和工具探讨(Discuss the audit tools for open source license GPL/LGPL/MIT)
  7. windows 编程随笔——输出文本WM_PAINT消息|有效矩形和无效矩形
  8. Apache基金会正式宣布新一代分布式对象存储Ozone成为顶级项目
  9. Android Studio出现cannot resolve symbol httpclient解决方法
  10. Nginx的端口修改问题
  11. cuBLAS矩阵乘法性能分析(附代码示例)
  12. 织梦程序添加音乐上传功能
  13. Unable to import maven project: See logs for details
  14. 标题:深度分销的方向和尺度 内容:Pnbsp;深度分销的方向和尺度BRnbsp;nbsp; 所谓深度分销,有人也称之为通路精耕细作,是通过减少原有渠道层次,并增强中间商分销能力或通过企
  15. 简单的微信聊天模拟(W-01)
  16. 防止机械/移动硬盘休眠 - NoSleepHD
  17. 如何将WORD中的公式转为图片
  18. js 或者vue中for循环去掉最后一个逗号
  19. 虚拟服务器启动顺序,虚拟机开机启动项设置方法
  20. The Network Adapter could not establish the connection.java.net.ConnectException: Connection refu

热门文章

  1. SQL 错误代码汇总
  2. 物理数据库设计 - 读书笔记
  3. prune研究记录(二)
  4. SVG-Android开源库——SVG生成Vector资源文件的编辑预览工具
  5. Python-Matplotlib 12 多图figure
  6. DN安卓2014版(5-9)
  7. SQL Server2005的XML数据类型之基础篇 (4)
  8. NER | 命名实体识别在QQ音乐上的应用
  9. Meta Learning | 加了元学习之后,少样本学习竟然可以变得这么简单!
  10. NAACL2021 | 苏大阿里提出:一种统一的基于跨度的意见挖掘方法