举例讲解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实现下载整个ftp目录的方法
Jan 17 Python
Python文件和流(实例讲解)
Sep 12 Python
Python 获得13位unix时间戳的方法
Oct 20 Python
Python 字符串与数字输出方法
Jul 16 Python
python 使用 requests 模块发送http请求 的方法
Dec 09 Python
django使用LDAP验证的方法示例
Dec 10 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
Dec 22 Python
python3 map函数和filter函数详解
Aug 26 Python
python 下 CMake 安装配置 OPENCV 4.1.1的方法
Sep 30 Python
python sklearn常用分类算法模型的调用
Oct 16 Python
python如何设置静态变量
Sep 07 Python
python 如何读、写、解析CSV文件
Mar 03 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
比较strtr, str_replace和preg_replace三个函数的效率
2013/06/26 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
2016/05/18 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
2019/10/08 PHP
javascript 面向对象,实现namespace,class,继承,重载
2009/10/29 Javascript
ASP.NET jQuery 实例10 动态修改hyperlink的URL值
2012/02/03 Javascript
JavaScript避免代码的重复执行经验技巧分享
2014/04/17 Javascript
基于jQuery实现网页进度显示插件
2015/03/04 Javascript
JavaScript中的bold()方法使用详解
2015/06/08 Javascript
javaScript给元素添加多个class的简单实现
2016/07/20 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
2016/12/08 Javascript
Javascript中构造函数要注意的一些坑
2017/01/23 Javascript
JavaScript中Promise的使用详解
2017/02/26 Javascript
微信小程序云开发修改云数据库中的数据方法
2019/05/18 Javascript
使用JQuery自动完成插件Auto Complete详解
2019/06/18 jQuery
JS中比Switch...Case更优雅的多条件判断写法
2019/09/05 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
2020/07/28 Javascript
Python使用ftplib实现简易FTP客户端的方法
2015/06/03 Python
python实现实时监控文件的方法
2016/08/26 Python
python中subprocess批量执行linux命令
2018/04/27 Python
对sklearn的使用之数据集的拆分与训练详解(python3.6)
2018/12/14 Python
python安装和pycharm环境搭建设置方法
2020/05/27 Python
Python 程序员必须掌握的日志记录
2020/08/17 Python
canvas 绘图时位置偏离的问题解决
2020/09/16 HTML / CSS
SQL Server数据库笔试题和答案
2016/02/04 面试题
加拿大探亲邀请信
2014/01/28 职场文书
平面设计求职信
2014/03/10 职场文书
《理想的风筝》教学反思
2014/04/11 职场文书
七夕相亲活动策划方案
2014/08/31 职场文书
商务英语专业大学生职业生涯规划书
2014/09/14 职场文书
2014年保管员工作总结
2014/11/18 职场文书
土建技术员岗位职责
2015/04/11 职场文书
新学期主题班会
2015/08/17 职场文书
MySQL基础(一)
2021/04/05 MySQL
详解OpenCV曝光融合
2022/04/29 Python