举例讲解Python的lambda语句声明匿名函数的用法


Posted in Python onJuly 01, 2016

所谓匿名函数,即是不需要定义函数,像表达式一样使用,不需要函数名(很多时候名字让我很困扰),一些简单的函数简单化, 举个例子
我需要两个整数相加的函数,通常是这么定义的

def add(x, y):
  return x + y

很好的完成了我需要的功能, 但是我现在需要一个数字与字符串相加的函数

def addstr(x, y):
  return x + str(y)

又一次完成了我的需求,但是 我突然需要两个整数相减,相除的功能这样函数就得 一直写下去, 但是使用lambda 匿名函数可以直接使用

# 相加的实现
f = lambda x, y: x + y

f_str = lambda x, y: x + str(y)

简化了操作 让函数更简单,但有个缺点就是 可维护性差, 当需要功能复杂时不建议使用

lambda语句的目的是由于性能的原因,在调用时绕过函数的栈分配。其语法是:

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

下面举例来说明lambda语句的使用方法(无参数)。

Python匿名函数lambda举例(无参数)Python

# 使用def定义函数的方法
def true():
  return True

#等价的lambda表达式
>>> lambda :True
<function <lambda> at 0x0000000001E42518>

# 保留lambda对象到变量中,以便随时调用
>>> true = lambda :True
>>> true()
True

# 使用def定义函数的方法
def true():
  return True
 
#等价的lambda表达式
>>> lambda :True
<function <lambda> at 0x0000000001E42518>
 
# 保留lambda对象到变量中,以便随时调用
>>> true = lambda :True
>>> true()
True

下面再举一个带参数的例子。

Python匿名函数lambda举例(含参数)Python

# 使用def定义的函数
def add( x, y ):
  return x + y

# 使用lambda的表达式
lambda x, y: x + y

# lambda也允许有默认值和使用变长参数
lambda x, y = 2: x + y
lambda *z: z

# 调用lambda函数
>>> a = lambda x, y: x + y
>>> a( 1, 3 )
4
>>> b = lambda x, y = 2: x + y
>>> b( 1 )
3
>>> b( 1, 3 )
4
>>> c = lambda *z: z
>>> c( 10, 'test')
(10, 'test')

# 使用def定义的函数
def add( x, y ):
  return x + y
 
# 使用lambda的表达式
lambda x, y: x + y
 
# lambda也允许有默认值和使用变长参数
lambda x, y = 2: x + y
lambda *z: z
 
# 调用lambda函数
>>> a = lambda x, y: x + y
>>> a( 1, 3 )
4
>>> b = lambda x, y = 2: x + y
>>> b( 1 )
3
>>> b( 1, 3 )
4
>>> c = lambda *z: z
>>> c( 10, 'test')
(10, 'test')

是不是看起来代码更简洁,又不失可读性。

Python 相关文章推荐
Tornado服务器中绑定域名、虚拟主机的方法
Aug 22 Python
python用来获得图片exif信息的库实例分析
Mar 16 Python
python数据类型_字符串常用操作(详解)
May 30 Python
python实现人脸识别代码
Nov 08 Python
使用requests库制作Python爬虫
Mar 25 Python
python字符串常用方法
Jun 14 Python
python3中zip()函数使用详解
Jun 29 Python
Python走楼梯问题解决方法示例
Jul 25 Python
python3.7环境下安装Anaconda的教程图解
Sep 10 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
Dec 05 Python
python TCP包注入方式
May 05 Python
如何基于Python pygame实现动画跑马灯
Nov 18 Python
Python内置数据结构与操作符的练习题集锦
Jul 01 #Python
Python设置默认编码为utf8的方法
Jul 01 #Python
Python使用email模块对邮件进行编码和解码的实例教程
Jul 01 #Python
详解Python中使用base64模块来处理base64编码的方法
Jul 01 #Python
Python画图学习入门教程
Jul 01 #Python
Python中json格式数据的编码与解码方法详解
Jul 01 #Python
python判断字符串编码的简单实现方法(使用chardet)
Jul 01 #Python
You might like
AJAX for PHP简单表数据查询实例
2007/01/02 PHP
一个简单安全的PHP验证码类、PHP验证码
2016/09/24 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
2019/10/15 PHP
JavaScript中String和StringBuffer的速度之争
2010/04/01 Javascript
js 编程笔记 无名函数
2011/06/28 Javascript
关于图片按比例自适应缩放的js代码
2011/10/30 Javascript
JS获得URL超链接的参数值实例代码
2013/06/21 Javascript
jquery中animate动画积累的解决方法
2013/10/05 Javascript
JS调试必备的5个debug技巧
2014/03/07 Javascript
SuperSlide2实现图片滚动特效
2014/06/20 Javascript
基于 Docker 开发 NodeJS 应用
2014/07/30 NodeJs
JavaScript中字符串(string)转json的2种方法
2015/06/25 Javascript
很棒的js选项卡切换效果
2016/07/15 Javascript
layui实现table加载的示例代码
2018/08/14 Javascript
解决vue项目运行npm run serve报错的问题
2020/10/26 Javascript
Python 文件操作技巧(File operation) 实例代码分析
2008/08/11 Python
MySQL最常见的操作语句小结
2015/05/07 Python
深入理解Python中装饰器的用法
2016/06/28 Python
Python实现螺旋矩阵的填充算法示例
2017/12/28 Python
浅谈python 中类属性共享的问题
2019/07/02 Python
使用PyCharm进行远程开发和调试的实现
2019/11/04 Python
详解Pycharm出现out of memory的终极解决方法
2020/03/03 Python
python 获取字典键值对的实现
2020/11/12 Python
美国隐形眼镜网:Major Lens
2018/02/09 全球购物
亚洲航空公司官方网站:AirAsia
2019/11/25 全球购物
Brasty罗马尼亚:购买手表、香水、化妆品、珠宝
2020/04/21 全球购物
职业教育毕业生求职信
2013/11/09 职场文书
家长对小学生的评语
2014/01/28 职场文书
决心书标准格式
2014/03/11 职场文书
“向国旗敬礼”活动策划方案(4篇)
2014/09/27 职场文书
党员查摆问题及整改措施
2014/10/10 职场文书
酒店圣诞节活动总结
2015/05/06 职场文书
学生会招新宣传语
2015/07/13 职场文书
Ajax实现局部刷新的方法实例
2021/03/31 Javascript
mongodb清除连接和日志的正确方法分享
2021/09/15 MongoDB