举例讲解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 相关文章推荐
wxpython中利用线程防止假死的实现方法
Aug 11 Python
Python中解析JSON并同时进行自定义编码处理实例
Feb 08 Python
Python魔术方法详解
Feb 14 Python
python查看FTP是否能连接成功的方法
Jul 30 Python
Python入门学习之字符串与比较运算符
Oct 12 Python
使用pandas read_table读取csv文件的方法
Jul 04 Python
python实现对图片进行旋转,放缩,裁剪的功能
Aug 07 Python
Python爬虫使用代理IP的实现
Oct 27 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
Feb 26 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
Oct 27 Python
Pytorch distributed 多卡并行载入模型操作
Jun 05 Python
linux中nohup和后台运行进程查看及终止
Jun 24 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线性表的入栈与出栈实例分析
2015/06/12 PHP
2款PHP无限级分类实例代码
2015/11/11 PHP
关于laravel5.5的定时任务详解(demo)
2019/10/23 PHP
javascript 匿名函数的理解(透彻版)
2010/01/28 Javascript
iframe 上下滚动条如何默认在下方实现原理
2012/12/10 Javascript
jquery统计复选框选中示例
2013/11/05 Javascript
javascript打印html内容功能的方法示例
2013/11/28 Javascript
jQuery删除节点的三个方法即remove()detach()和empty()
2013/12/27 Javascript
js实现input框文字动态变换显示效果
2015/08/19 Javascript
Bootstrap表单使用方法详解
2017/02/17 Javascript
详解vue项目接入微信JSSDK的坑
2018/12/14 Javascript
深入理解vue-class-component源码阅读
2019/02/18 Javascript
使用Jenkins部署React项目的方法步骤
2019/03/11 Javascript
vue如何搭建多页面多系统应用
2020/06/17 Javascript
js基于canvas实现时钟组件
2021/02/07 Javascript
Python 2.7.x 和 3.x 版本的重要区别小结
2014/11/28 Python
Python随机生成均匀分布在单位圆内的点代码示例
2017/11/13 Python
python训练数据时打乱训练数据与标签的两种方法小结
2018/11/08 Python
Python面向对象之类的内置attr属性示例
2018/12/14 Python
Django使用redis缓存服务器的实现代码示例
2019/04/28 Python
梅尔频率倒谱系数(mfcc)及Python实现
2019/06/18 Python
PyCharm 专业版安装图文教程
2020/02/20 Python
Javascript 高级手势使用介绍
2013/04/21 HTML / CSS
HTML5新特性 多线程(Worker SharedWorker)
2017/04/24 HTML / CSS
Fashion Eyewear美国:英国线上设计师眼镜和太阳镜的零售商
2016/08/15 全球购物
Saks Fifth Avenue澳洲/亚太地区:萨克斯第五大道精品百货店
2019/06/09 全球购物
戴尔马来西亚官网:Dell Malaysia
2020/05/02 全球购物
产品销售员岗位职责
2013/12/18 职场文书
职业培训师职业生涯规划
2014/02/18 职场文书
一帮一活动总结
2014/05/08 职场文书
超越自我演讲稿
2014/05/21 职场文书
大学感恩节活动策划方案
2014/10/11 职场文书
个人贷款收入证明
2014/10/26 职场文书
卖房协议书样本
2014/10/30 职场文书
故意杀人罪辩护词
2015/05/21 职场文书
零基础学java之循环语句的使用
2022/04/10 Java/Android