举例讲解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 相关文章推荐
Python正则表达式匹配ip地址实例
Oct 09 Python
python日志记录模块实例及改进
Feb 12 Python
python机器人行走步数问题的解决
Jan 29 Python
python中logging包的使用总结
Feb 28 Python
pandas实现选取特定索引的行
Apr 20 Python
python pycurl验证basic和digest认证的方法
May 02 Python
python脚本实现验证码识别
Jun 07 Python
Python实现繁体中文与简体中文相互转换的方法示例
Dec 18 Python
pyshp创建shp点文件的方法
Dec 31 Python
Python 从一个文件中调用另一个文件的类方法
Jan 10 Python
Python创建或生成列表的操作方法
Jun 19 Python
python实现单链表的方法示例
Sep 03 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
IIS6的PHP最佳配置方法
2007/03/19 PHP
php.ini中date.timezone设置分析
2011/07/29 PHP
PHP根据session与cookie用户登录状态操作类的代码
2016/05/13 PHP
js querySelector和getElementById通过id获取元素的区别
2012/04/20 Javascript
js Map List 遍历使用示例
2013/07/10 Javascript
Jquery自定义button按钮的几种方法
2014/06/11 Javascript
Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)
2016/09/09 Javascript
jquery中用函数来设置css样式
2016/12/22 Javascript
原生JS实现圣旨卷轴展开效果
2017/03/06 Javascript
详解Vue-cli 创建的项目如何跨域请求
2017/05/18 Javascript
微信小程序 选项卡的简单实例
2017/05/24 Javascript
JS实现图片放大镜插件详解
2017/11/06 Javascript
JS设计模式之观察者模式实现实时改变页面中金额数的方法
2018/02/05 Javascript
angular ng-model 无法获取值的处理方法
2018/10/02 Javascript
JS实现深度优先搜索求解两点间最短路径
2019/01/17 Javascript
vue router 组件的高级应用实例代码
2019/04/08 Javascript
vscode vue 文件模板的配置方法
2019/07/23 Javascript
python 生成目录树及显示文件大小的代码
2009/07/23 Python
python用来获得图片exif信息的库实例分析
2015/03/16 Python
Python 查看文件的编码格式方法
2017/12/21 Python
python使用__slots__让你的代码更加节省内存
2018/09/05 Python
使用Python实现将list中的每一项的首字母大写
2019/06/11 Python
python 将日期戳(五位数时间)转换为标准时间
2019/07/11 Python
Python SMTP发送电子邮件的示例
2020/09/23 Python
如何使用localstorage代替cookie实现跨域共享数据问题
2018/04/18 HTML / CSS
canvas实现烟花的示例代码
2020/01/16 HTML / CSS
Waterford美国官网:爱尔兰水晶制品品牌
2017/04/26 全球购物
广州迈达威.net面试题目
2012/03/10 面试题
仓库管理专业个人的自我评价
2013/12/30 职场文书
法制宣传实施方案
2014/03/13 职场文书
建党伟业观后感
2015/06/01 职场文书
小学入学感言
2015/08/01 职场文书
幼儿教师师德培训心得体会
2016/01/09 职场文书
教师培训学习心得体会
2016/01/21 职场文书
关于golang高并发的实现与注意事项说明
2021/05/08 Golang
Win11 22H2 2022怎么更新? 获得Win1122H22022版本升级技巧
2022/09/23 数码科技