举例讲解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 sys模块sys.path使用方法示例
Dec 04 Python
gearman的安装启动及python API使用实例
Jul 08 Python
python登陆asp网站页面的实现代码
Jan 14 Python
Python实现分割文件及合并文件的方法
Jul 10 Python
python开发之for循环操作实例详解
Nov 12 Python
Python2.7下安装Scrapy框架步骤教程
Dec 22 Python
python面向对象入门教程之从代码复用开始(一)
Dec 11 Python
python获取地震信息 微信实时推送
Jun 18 Python
在Python中实现函数重载的示例代码
Dec 12 Python
Python如何把字典写入到CSV文件的方法示例
Aug 23 Python
python 基于UDP协议套接字通信的实现
Jan 22 Python
Python数据分析之pandas函数详解
Apr 21 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
PHPCMS2008广告模板SQL注入漏洞修复
2016/10/11 PHP
JavaScript中为元素加上name属性的方法
2011/05/09 Javascript
JSON为什么那样红为什么要用json(另有洞天)
2012/12/26 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
2013/01/24 Javascript
js为空或不是对象问题的快速解决方法
2013/12/11 Javascript
javascript数组快速打乱重排的方法
2014/01/02 Javascript
JavaScript异步编程Promise模式的6个特性
2014/04/03 Javascript
JS合并数组的几种方法及优劣比较
2014/09/19 Javascript
JavaScript获取图片真实大小代码实例
2014/09/24 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
2015/04/14 Javascript
jquery获取url参数及url加参数的方法
2015/10/26 Javascript
JS实现将数字金额转换为大写人民币汉字的方法
2016/08/02 Javascript
BootStrap实现手机端轮播图左右滑动事件
2016/10/13 Javascript
Vue.js实现网格列表布局转换方法
2017/08/25 Javascript
详解在微信小程序的JS脚本中使用Promise来优化函数处理
2019/03/06 Javascript
vue实现的请求服务器端API接口示例
2019/05/25 Javascript
JS阻止事件冒泡的方法详解
2019/08/26 Javascript
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
2014/06/18 Python
对python周期性定时器的示例详解
2019/02/19 Python
python实现文件助手中查看微信撤回消息
2019/04/29 Python
Python scrapy增量爬取实例及实现过程解析
2019/12/24 Python
解决jupyter notebook显示不全出现框框或者乱码问题
2020/04/09 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
详解基于python的全局与局部序列比对的实现(DNA)
2020/10/07 Python
加拿大专业美发产品购物网站:Chatters
2021/02/28 全球购物
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
护士自我鉴定范文
2013/10/06 职场文书
厂长助理岗位职责
2013/12/27 职场文书
班长自荐书范文
2014/02/11 职场文书
销售人员求职的自我评价分享
2014/03/15 职场文书
心理咨询承诺书
2014/05/20 职场文书
音乐之声音乐广播稿
2014/09/10 职场文书
党小组评议意见
2015/06/02 职场文书
小学语文教学随笔
2015/08/14 职场文书
爱护公物主题班会
2015/08/17 职场文书
MySQL删除和插入数据很慢的问题解决
2021/06/03 MySQL