举例讲解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中__new__与__init__方法的区别详解
May 04 Python
教大家使用Python SqlAlchemy
Feb 12 Python
Python算术运算符实例详解
May 31 Python
Python实现识别手写数字 简易图片存储管理系统
Jan 29 Python
Python math库 ln(x)运算的实现及原理
Jul 17 Python
tensorflow 获取checkpoint中的变量列表实例
Feb 11 Python
Python获取对象属性的几种方式小结
Mar 12 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
Apr 29 Python
Python CSS选择器爬取京东网商品信息过程解析
Jun 01 Python
keras 多任务多loss实例
Jun 22 Python
详解Python3 定义一个跨越多行的字符串的多种方法
Sep 06 Python
python爬取微博评论的实例讲解
Jan 15 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
优化PHP代码的53条建议
2008/03/27 PHP
php下目前为目最全的CURL中文说明
2010/08/01 PHP
PHP 图片文件上传实现代码
2010/12/29 PHP
js限制textarea每行输入字符串长度的代码
2012/10/31 Javascript
对jQuery的事件绑定的一些思考(补充)
2013/04/20 Javascript
jquery移除、绑定、触发元素事件使用示例详解
2014/04/10 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
jquery拖拽效果完整实例(附demo源码下载)
2016/01/14 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
特殊日期提示功能的实现方法
2016/06/16 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
2016/11/18 Javascript
js实现用户输入的小写字母自动转大写字母的方法
2017/01/21 Javascript
Webpack+Vue如何导入Jquery和Jquery的第三方插件
2017/02/20 Javascript
js实现多行文本框统计剩余字数功能
2017/03/28 Javascript
详解如何使用Node.js编写命令工具——以vue-cli为例
2017/06/29 Javascript
基于 Vue.js 2.0 酷炫自适应背景视频登录页面实现方式
2018/01/17 Javascript
关于Angularjs中自定义指令一些有价值的细节和技巧小结
2018/04/22 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
2018/10/25 Javascript
通过实例解析javascript Date对象属性及方法
2020/11/04 Javascript
Python内置函数Type()函数一个有趣的用法
2015/02/18 Python
简单介绍Ruby中的CGI编程
2015/04/10 Python
python实现汉诺塔算法
2021/03/01 Python
新年快乐! python实现绚烂的烟花绽放效果
2019/01/30 Python
python装饰器简介---这一篇也许就够了(推荐)
2019/04/01 Python
python调用webservice接口的实现
2019/07/12 Python
40个你可能不知道的Python技巧附代码
2020/01/29 Python
TensorFlow打印输出tensor的值
2020/04/19 Python
如何通过命令行进入python
2020/07/06 Python
LUISAVIAROMA德国官网:时尚奢侈品牌购物网站
2020/11/12 全球购物
淘宝店铺营销方案
2014/02/13 职场文书
资助贫困学生倡议书
2014/05/16 职场文书
竞选宣传委员演讲稿
2014/05/24 职场文书
营销与策划专业求职信
2014/06/20 职场文书
先进基层党组织事迹材料2016
2016/02/29 职场文书
Nginx设置HTTPS的方法步骤 443证书配置方法
2022/03/21 Servers
mysql查询结果实现多列拼接查询
2022/04/03 MySQL