举例讲解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中argparse模块用法实例详解
Jun 03 Python
Python导入oracle数据的方法
Jul 10 Python
Python基础教程之tcp socket编程详解及简单实例
Feb 23 Python
Python实现PS图像调整之对比度调整功能示例
Jan 26 Python
理论讲解python多进程并发编程
Feb 09 Python
wxPython+Matplotlib绘制折线图表
Nov 19 Python
从0到1使用python开发一个半自动答题小程序的实现
May 12 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
Sep 26 Python
pycharm永久激活超详细教程
Oct 29 Python
python 实现表情识别
Nov 21 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
Mar 01 Python
python实现socket简单通信的示例代码
Apr 13 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/04/09 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
2015/06/10 PHP
关于PHP开发的9条建议
2015/07/27 PHP
实现WordPress主题侧边栏切换功能的PHP脚本详解
2015/12/14 PHP
PHP实现下载远程图片保存到本地的方法
2017/06/19 PHP
php post json参数的传递和接收处理方法
2018/05/31 PHP
PHP校验15位和18位身份证号的类封装
2018/11/07 PHP
jquery ui resizable bug解决方法
2010/10/26 Javascript
JS获取后台Cookies值的小例子
2013/03/04 Javascript
多个datatable共存造成多个表格的checkbox都被选中
2013/07/11 Javascript
JS中使用sort结合localeCompare实现中文排序实例
2014/07/23 Javascript
Jquery中Event对象属性小结
2015/02/27 Javascript
javascript实现画不相交的圆
2015/04/07 Javascript
JavaScript的类型、值和变量小结
2015/07/09 Javascript
jquery验证手机号是否正确实例讲解
2015/11/17 Javascript
jQuery学习笔记之Ajax用法实例详解
2015/12/01 Javascript
angularjs封装bootstrap时间插件datetimepicker
2016/06/20 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
使用FormData实现上传多个文件
2018/12/04 Javascript
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
layui 监听select选择 获取当前select的ID名称方法
2019/09/24 Javascript
JavaScript canvas绘制渐变颜色的矩形
2020/02/18 Javascript
[45:18]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第一场
2018/04/04 DOTA
测试、预发布后用python检测网页是否有日常链接
2014/06/03 Python
python日期时间转为字符串或者格式化输出的实例
2018/05/29 Python
Python实现爬取马云的微博功能示例
2019/02/16 Python
Pandas中resample方法详解
2019/07/02 Python
快速解决pymongo操作mongodb的时区问题
2020/12/05 Python
python 基于PYMYSQL使用MYSQL数据库
2020/12/24 Python
CSS3 仿微信聊天小气泡实例代码
2017/04/05 HTML / CSS
法院先进个人事迹材料
2014/05/04 职场文书
社区戒毒工作方案
2014/06/04 职场文书
ktv服务员岗位职责
2015/02/09 职场文书
中学生综合素质自我评价
2015/03/06 职场文书
2016高考感言
2015/08/01 职场文书
python前后端自定义分页器
2022/04/13 Python