举例讲解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 相关文章推荐
详解Django+Uwsgi+Nginx的生产环境部署
Jun 25 Python
对python中的six.moves模块的下载函数urlretrieve详解
Dec 19 Python
对python中GUI,Label和Button的实例详解
Jun 27 Python
Python程序打包工具py2exe和PyInstaller详解
Jun 28 Python
pandas条件组合筛选和按范围筛选的示例代码
Aug 26 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
Sep 06 Python
用python写测试数据文件过程解析
Sep 25 Python
Matplotlib scatter绘制散点图的方法实现
Jan 02 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
Jan 06 Python
pycharm导入源码的具体步骤
Aug 04 Python
jupyter notebook快速入门及使用详解
Nov 13 Python
python使用numpy中的size()函数实例用法详解
Jan 29 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 GD绘制24小时柱状图
2008/06/28 PHP
php 接口类与抽象类的实际作用
2009/11/26 PHP
javascript 小型动画组件与实现代码
2010/06/02 PHP
php获取操作系统语言代码
2013/11/04 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
2014/04/24 PHP
实例讲解PHP面向对象之多态
2014/08/20 PHP
简单实例处理url特殊符号&amp;处理(2种方法)
2013/04/02 Javascript
基于JS实现省市联动效果代码分享
2016/06/06 Javascript
jQuery插件passwordStrength密码强度指标详解
2016/06/24 Javascript
纯css下拉菜单 无需js
2016/08/15 Javascript
js实现模糊匹配功能
2017/02/15 Javascript
原生JS实现不断变化的标签
2017/05/22 Javascript
理解 Node.js 事件驱动机制的原理
2017/08/16 Javascript
Vue Element使用icon图标教程详解(第三方)
2018/02/07 Javascript
JS严格模式知识点总结
2018/02/27 Javascript
vue项目环境变量配置的实现方法
2018/10/12 Javascript
javascript sort()对数组中的元素进行排序详解
2019/10/13 Javascript
vue 实现cli3.0中使用proxy进行代理转发
2019/10/30 Javascript
python多线程threading.Lock锁用法实例
2014/11/01 Python
Python遍历目录并批量更换文件名和目录名的方法
2016/09/19 Python
Python网络爬虫项目:内容提取器的定义
2016/10/25 Python
Python实现的本地文件搜索功能示例【测试可用】
2018/05/30 Python
Python实现图片识别加翻译功能
2019/12/26 Python
Pytorch之扩充tensor的操作
2021/03/04 Python
css和css3弹性盒模型实现元素宽度(高度)自适应
2019/05/15 HTML / CSS
应用艺术毕业生的自我评价
2013/12/04 职场文书
公司自我介绍演讲稿
2014/08/21 职场文书
计划生育证明格式及范本
2014/10/09 职场文书
12.4全国法制宣传日活动方案
2014/11/02 职场文书
解除劳动关系协议书2篇
2014/11/28 职场文书
小学体育队列队形教学反思
2016/02/16 职场文书
2016优秀护士先进个人事迹材料
2016/02/25 职场文书
一文了解JavaScript用Element Traversal新属性遍历子元素
2021/11/27 Javascript
使用Ajax实现无刷新上传文件
2022/04/12 Javascript
使用Redis实现分布式锁的方法
2022/06/16 Redis
解决ubuntu安装软件时,status-code=409报错的问题
2022/12/24 Servers