举例讲解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代码制作configure文件示例
Jul 28 Python
Python实现文件信息进行合并实例代码
Jan 17 Python
Django基础知识与基本应用入门教程
Jul 20 Python
Python实现定时执行任务的三种方式简单示例
Mar 30 Python
使用Python Pandas处理亿级数据的方法
Jun 24 Python
Django通用类视图实现忘记密码重置密码功能示例
Dec 17 Python
使用Tensorflow实现可视化中间层和卷积层
Jan 24 Python
Python生成并下载文件后端代码实例
Aug 31 Python
安装pyinstaller遇到的各种问题(小结)
Nov 20 Python
解决virtualenv -p python3 venv报错的问题
Feb 05 Python
Python制作运行进度条的实现效果(代码运行不无聊)
Feb 24 Python
Python超详细分步解析随机漫步
Mar 17 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图像处理类分享
2014/11/18 PHP
深入剖析浏览器退出之后php还会继续执行么
2016/05/17 PHP
laravel csrf排除路由,禁止,关闭指定路由的例子
2019/10/21 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
JS Excel读取和写入操作(模板操作)实现代码
2010/04/11 Javascript
jquery blockUI 遮罩不能消失与不能提交的解决方法
2011/09/17 Javascript
使用Java实现简单的server/client回显功能的方法介绍
2013/05/03 Javascript
js图片实时加载提供网页打开速度
2014/09/11 Javascript
JavaScript获取浏览器信息的方法
2015/11/20 Javascript
使用bootstrap validator的remote验证代码经验分享(推荐)
2016/09/21 Javascript
JS公共小方法之判断对象是否为domElement的实例
2016/11/25 Javascript
Bootstrap布局之栅格系统学习笔记
2017/05/04 Javascript
JS实现预加载视频音频/视频获取截图(返回canvas截图)
2017/10/09 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
2018/02/27 Javascript
vue结合axios与后端进行ajax交互的方法
2018/07/06 Javascript
在Vant的基础上实现添加表单验证框架的方法示例
2018/12/05 Javascript
利用jsonp解决js读取本地json跨域的问题
2018/12/11 Javascript
jquery实现购物车基本功能
2019/10/25 jQuery
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
[56:41]iG vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/17 DOTA
讲解Python中if语句的嵌套用法
2015/05/14 Python
实例讲解Python中SocketServer模块处理网络请求的用法
2016/06/28 Python
Python3 queue队列模块详细介绍
2018/01/05 Python
pandas 选择某几列的方法
2018/07/03 Python
python实现自动解数独小程序
2019/01/21 Python
python实现全盘扫描搜索功能的方法
2019/02/14 Python
使用python-pptx包批量修改ppt格式的实现
2020/02/14 Python
python 项目目录结构设置
2020/02/14 Python
利用Python pandas对Excel进行合并的方法示例
2020/11/04 Python
韩国最大的购物网站:Gmarket
2019/06/20 全球购物
关于Java finally的面试题
2016/04/27 面试题
工会趣味活动方案
2014/08/18 职场文书
领导干部失职检讨书
2015/05/05 职场文书
监守自盗观后感
2015/06/10 职场文书
2015新教师教学工作总结
2015/07/22 职场文书
vue实现移动端div拖动效果
2022/03/03 Vue.js