举例讲解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文件读写操作与linux shell变量命令交互执行的方法
Jan 14 Python
Python脚本实现代码行数统计代码分享
Mar 10 Python
Python实现按照指定要求逆序输出一个数字的方法
Apr 19 Python
Linux下多个Python版本安装教程
Aug 15 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
Oct 14 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
Sep 11 Python
Django学习之文件上传与下载
Oct 06 Python
Python3 中sorted() 函数的用法
Mar 24 Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
Jun 01 Python
Python中关于logging模块的学习笔记
Jun 03 Python
Django开发RESTful API实现增删改查(入门级)
May 10 Python
python简单验证码识别的实现过程
Jun 20 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
用phpmyadmin更改mysql5.0登录密码
2008/03/25 PHP
微信公众号开发之语音消息识别php代码
2016/08/08 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
2007/03/10 Javascript
Jquery中Ajax 缓存带来的影响的解决方法
2011/05/19 Javascript
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
2011/08/09 Javascript
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
2012/05/23 Javascript
js返回上一页并刷新代码整理
2012/12/21 Javascript
HTML页面弹出居中可拖拽的自定义窗口层
2014/05/07 Javascript
Window.Open如何在同一个标签页打开
2014/06/20 Javascript
jquery SweetAlert插件实现响应式提示框
2015/08/18 Javascript
微信jssdk在iframe页面失效问题的解决措施
2016/03/03 Javascript
JS中如何实现复选框全选功能
2016/12/19 Javascript
javascript添加前置0(补零)的几种方法
2017/01/05 Javascript
简单实现jQuery级联菜单
2017/01/09 Javascript
JS验证不重复验证码
2017/02/10 Javascript
React-Native做一个文本输入框组件的实现代码
2017/08/10 Javascript
jQuery 禁止表单用户名、密码自动填充功能
2017/10/30 jQuery
javascript中关于类型判断的一些疑惑小结
2018/10/14 Javascript
浅析JavaScript 函数防抖和节流
2020/07/13 Javascript
Vue Object.defineProperty及ProxyVue实现双向数据绑定
2020/09/02 Javascript
python算法学习之计数排序实例
2013/12/18 Python
浅谈Python中的数据类型
2015/05/05 Python
django定期执行任务(实例讲解)
2017/11/03 Python
django项目用higcharts统计最近七天文章点击量
2019/08/17 Python
Python + Flask 实现简单的验证码系统
2019/10/01 Python
Pytorch中的自动求梯度机制和Variable类实例
2020/02/29 Python
Django接收照片储存文件的实例代码
2020/03/07 Python
python实现PDF中表格转化为Excel的方法
2020/06/16 Python
Python venv虚拟环境配置过程解析
2020/07/08 Python
pytorch简介
2020/11/11 Python
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
阿里云:Aliyun.com
2017/02/15 全球购物
大学生专科毕业生自我评价
2013/11/17 职场文书
总经理岗位职责描述
2014/02/08 职场文书
生育关怀行动实施方案
2014/03/26 职场文书
2019让人心动的商业计划书
2019/06/27 职场文书