举例讲解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检测lvs real server状态
Jan 22 Python
python实现雨滴下落到地面效果
Jun 21 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
Feb 18 Python
python networkx 包绘制复杂网络关系图的实现
Jul 10 Python
Python内置数据类型list各方法的性能测试过程解析
Jan 07 Python
tensorflow使用指定gpu的方法
Feb 04 Python
windows python3安装Jupyter Notebooks教程
Apr 13 Python
总结Pyinstaller的坑及终极解决方法(小结)
Sep 21 Python
python 决策树算法的实现
Oct 09 Python
python爬虫之爬取笔趣阁小说
Apr 22 Python
一小时学会TensorFlow2之基本操作2实例代码
Sep 04 Python
Python 如何利用ffmpeg 处理视频素材
Nov 27 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学习笔记(二) 了解PHP的基本语法以及目录结构
2014/08/04 PHP
一个非常完美的读写ini格式的PHP配置类分享
2015/02/12 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
2017/08/11 PHP
php无限极分类实现方法分析
2019/07/04 PHP
JAVASCRIPT下判断IE与FF的比较简单的方式
2008/10/17 Javascript
jquery插件之easing 动态菜单
2010/08/21 Javascript
通过js来制作复选框的全选和不选效果
2014/05/22 Javascript
jquery中map函数与each函数的区别实例介绍
2014/06/23 Javascript
JavaScript函数中关于valueOf和toString的理解
2016/06/14 Javascript
Validform表单验证总结篇
2016/10/31 Javascript
AngularJS模仿Form表单提交的实现代码
2016/12/08 Javascript
bootstrap table实现单击单元格可编辑功能
2017/03/28 Javascript
详解微信小程序 相对定位和绝对定位
2017/05/11 Javascript
jQuery.ajax向后台传递数组问题的解决方法
2017/05/12 jQuery
使用jQuery实现鼠标点击左右按钮滑动切换
2017/08/04 jQuery
AngularJS实现自定义指令及指令配置项的方法
2017/11/20 Javascript
vue路由前进后退动画效果的实现代码
2018/12/10 Javascript
浅谈Vue服务端渲染框架Nuxt的那些事
2018/12/21 Javascript
三步实现ionic3点击退出app程序
2019/09/17 Javascript
小程序点击图片实现png转jpg
2019/10/22 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
2020/04/20 Javascript
简单介绍Python中的几种数据类型
2016/01/02 Python
python实现超简单的视频对象提取功能
2018/06/04 Python
解决python线程卡死的问题
2019/02/18 Python
使用keras时input_shape的维度表示问题说明
2020/06/29 Python
Python中全局变量和局部变量的理解与区别
2021/02/07 Python
css3学习之2D转换功能详解
2016/12/23 HTML / CSS
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
2017/08/24 HTML / CSS
微软中国官方旗舰店:销售Surface、Xbox One、笔记本电脑、Office
2018/07/23 全球购物
亚马逊巴西站:Amazon.com.br
2019/09/22 全球购物
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
外科实习自我鉴定
2013/10/06 职场文书
美术师范毕业生自荐信
2013/11/16 职场文书
承诺书范文
2014/06/03 职场文书
《夸父追日》教学反思
2016/02/20 职场文书
用基于python的appium爬取b站直播消费记录
2021/04/17 Python