举例讲解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模板加载器的简单示例
Jul 21 Python
详解Python实现按任意键继续/退出的功能
Aug 19 Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
Sep 26 Python
Django代码性能优化与Pycharm Profile使用详解
Aug 26 Python
django 基于中间件实现限制ip频繁访问过程详解
Jul 30 Python
python实现两个文件夹的同步
Aug 29 Python
Python银行系统实战源码
Oct 25 Python
tensorflow指定GPU与动态分配GPU memory设置
Feb 03 Python
使用keras2.0 将Merge层改为函数式
May 23 Python
Python之字典添加元素的几种方法
Sep 30 Python
python mongo 向数据中的数组类型新增数据操作
Dec 05 Python
python性能测试工具locust的使用
Dec 28 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 组件化编程技巧
2009/06/06 PHP
自动把纯文本转换成Web页面的php代码
2009/08/27 PHP
叫你如何修改Nginx与PHP的文件上传大小限制
2014/09/10 PHP
php获取用户真实IP和防刷机制的实例代码
2018/11/28 PHP
实现超用户体验 table排序javascript实现代码
2009/06/22 Javascript
js或css实现滚动广告的几种方案
2010/01/28 Javascript
javascript调试说明
2010/06/07 Javascript
js导航栏单击事件背景变换示例代码
2014/01/13 Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
2014/06/24 Javascript
jQuery实现Twitter的自动文字补齐特效
2014/11/28 Javascript
JavaScript中的console.trace()函数介绍
2014/12/29 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
JS实用的动画弹出层效果实例
2015/05/05 Javascript
jQuery实现网站添加高亮突出显示效果的方法
2015/06/26 Javascript
js实现适用于素材网站的黑色多级菜单导航条效果
2015/08/24 Javascript
jquery实现二级导航下拉菜单效果
2015/12/18 Javascript
jquery实现图片预加载
2015/12/25 Javascript
浅谈js构造函数的方法与原型prototype
2016/07/04 Javascript
微信小程序实现富文本图片宽度自适应的方法
2019/01/20 Javascript
[04:09]显微镜下的DOTA2第十二期—NaVi美如画的团战
2014/06/23 DOTA
[47:06]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第一局
2016/03/05 DOTA
python快速查找算法应用实例
2014/09/26 Python
python获取文件版本信息、公司名和产品名的方法
2014/10/05 Python
Flask框架的学习指南之开发环境搭建
2016/11/20 Python
python使用多线程编写tcp客户端程序
2019/09/02 Python
一文了解python 3 字符串格式化 F-string 用法
2020/03/04 Python
Python+PyQt5+MySQL实现天气管理系统
2020/06/16 Python
python可以用哪些数据库
2020/06/22 Python
英国领先的酒类网上商城:TheDrinkShop
2017/03/16 全球购物
世界上最大的专业美容用品零售商:Sally Beauty
2017/07/02 全球购物
奇怪的鱼:Weird Fish
2018/03/18 全球购物
Belvilla德国:在线预订度假屋
2018/04/10 全球购物
法国隐形眼镜网站:VisionDirect.fr
2020/03/03 全球购物
文职个人求职信范文
2013/09/23 职场文书
2014年高中班主任工作总结
2014/11/08 职场文书
我的法兰西岁月观后感
2015/06/09 职场文书