举例讲解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代理抓取并验证使用多线程实现
May 03 Python
利用打码兔和超人打码自封装的打码类分享
Mar 16 Python
python多重继承新算法C3介绍
Sep 28 Python
Python入门之三角函数tan()函数实例详解
Nov 08 Python
python中logging包的使用总结
Feb 28 Python
python中virtualenvwrapper安装与使用
May 20 Python
numpy判断数值类型、过滤出数值型数据的方法
Jun 09 Python
Python matplotlib的使用并自定义colormap的方法
Dec 13 Python
python matplotlib画图库学习绘制常用的图
Mar 19 Python
Django 源码WSGI剖析过程详解
Aug 05 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
Mar 16 Python
keras中的backend.clip用法
May 22 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
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
2013/06/24 PHP
php实现curl模拟ftp上传的方法
2015/07/29 PHP
JavaScript中的事件处理
2008/01/16 Javascript
精通Javascript系列之数值计算
2011/06/07 Javascript
JavaScript对象之深度克隆介绍
2014/12/08 Javascript
jQuery中noConflict()用法实例分析
2015/02/08 Javascript
AngularJS 中的事件详解
2016/07/28 Javascript
js运动事件函数详解
2016/10/21 Javascript
利用Node.js对文件进行重命名
2017/03/12 Javascript
利用vscode编写vue的简单配置详解
2017/06/17 Javascript
easyui-datagrid开发实践(总结)
2017/08/02 Javascript
Javascript(es2016) import和require用法和区别详解
2017/08/11 Javascript
五步轻松实现JavaScript HTML时钟效果
2020/03/25 Javascript
vue element-ui table表格滚动加载方法
2018/03/02 Javascript
Vue2.0中集成UEditor富文本编辑器的方法
2018/03/03 Javascript
微信小程序常见页面跳转操作简单示例
2019/05/01 Javascript
深入理解基于vue-cli的webpack打包优化实践及探索
2019/10/14 Javascript
vue解决花括号数据绑定不成功的问题
2019/10/30 Javascript
PHP 502bad gateway原因及解决方案
2020/11/13 Javascript
three.js显示中文字体与tween应用详析
2021/01/04 Javascript
Python脚本判断 Linux 是否运行在虚拟机上
2015/04/25 Python
python实现微信接口(itchat)详细介绍
2017/10/23 Python
Python使用django框架实现多人在线匿名聊天的小程序
2017/11/29 Python
几种实用的pythonic语法实例代码
2018/02/24 Python
python numpy格式化打印的实例
2018/05/14 Python
Django框架HttpRequest对象用法实例分析
2019/11/01 Python
Django model重写save方法及update踩坑详解
2020/07/27 Python
如何实现一个python函数装饰器(Decorator)
2020/10/12 Python
python中pow函数用法及功能说明
2020/12/04 Python
Pytorch实现WGAN用于动漫头像生成
2021/03/04 Python
P/Invoke是什么
2015/07/31 面试题
致我们终将逝去的青春观后感
2015/06/10 职场文书
2019年度开业庆典祝福语大全!
2019/07/05 职场文书
创业计划书之个人工作室
2019/08/22 职场文书
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android
Redis+AOP+自定义注解实现限流
2022/06/28 Redis