Python3匿名函数lambda介绍与使用示例


Posted in Python onMay 18, 2019

概述

匿名函数,顾名思义即没有名称的函数,和def定义的函数的最大区别在于匿名函数创建后返回函数本身(即匿名函数不需要return来返回值),表达式本身结果就是返回值,而def创建后则赋值给一个变量名,在Python中,我们利用关键词lambda创建匿名函数,以下是匿名函数lambda表达式的形式:

lambda arg1,arg2,.....argn:expression

以下为一些lambda的特点:

  • lambda 是一个表达式,而不是一个语句,即我们可以在任何可以使用表达式的场景一样使用lambda。
  • lambda 的主体也是一个表达式,即和def定义的函数一样,lambda也有函数主体,不过lambda的主体仅仅是一个表达式,所以其使用的功能受到较大的限制。

lambda使用

无参匿名函数

# 可以将lambda直接传递给一个变量,像调用一般函数一样使用
B = lambda :True
print(B())

# 等价于
def BF():
 return True
print(BF())

示例结果:

True
True

有参匿名函数

支持多个参数

参数无默认值

two_sum = lambda x, y: x + y
# 等同于:
def two_sum(x, y): return x + y
print(two_sum(1,2))

示例结果:

3

参数带默认值

sum_with_100 = lambda x, y=100: x + y
# 等同于:
def sum_with_100(x, y=100): return x + y
print(sum_with_100(200))

示例结果:

300

从后面传参

之前的示例我们将lambda匿名函数赋值一个变量,通过类似def定义的函数的方式传参,我们可以在lambda后面直接传递参数:

two_sum = (lambda x, y: x + y)(3, 4)
print(two_sum)

示例结果:

7

嵌套使用

将lambda嵌套到普通函数中,lambda函数本身做为return的值,构建简单的闭包

def sum(x):
 return lambda y: x + y
sum_with_100 = sum(100)
result = sum_with_100(200)
print(result)

示例结果:

300

一些使用实例

1. 结合三元表达式求两值中最小值

lower = lambda x,y: x if x<y else y
print(lower(7,100))

实例结果:

7

2. 对字典某一键值进行排序

d = [{"order":3},{"order":1},{"order":2}]
# 根据order键值排序
d.sort(key=lambda x:x['order']) 
print(d)

实例结果

[{'order': 1}, {'order': 2}, {'order': 3}]

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
纯Python开发的nosql数据库CodernityDB介绍和使用实例
Oct 23 Python
Python多线程同步Lock、RLock、Semaphore、Event实例
Nov 21 Python
Python实现保证只能运行一个脚本实例
Jun 24 Python
python类:class创建、数据方法属性及访问控制详解
Jul 25 Python
Python 'takes exactly 1 argument (2 given)' Python error
Dec 13 Python
numpy.where() 用法详解
May 27 Python
ML神器:sklearn的快速使用及入门
Jul 11 Python
Django框架创建项目的方法入门教程
Nov 04 Python
Python类中self参数用法详解
Feb 13 Python
django xadmin action兼容自定义model权限教程
Mar 30 Python
pycharm 实现光标快速移动到括号外或行尾的操作
Feb 05 Python
python 如何用terminal输入参数
May 25 Python
python中数组和矩阵乘法及使用总结(推荐)
May 18 #Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
May 18 #Python
python的内存管理和垃圾回收机制详解
May 18 #Python
Django处理多用户类型的方法介绍
May 18 #Python
Django 配置多站点多域名的实现步骤
May 17 #Python
将Python字符串生成PDF的实例代码详解
May 17 #Python
Python Django框架单元测试之文件上传测试示例
May 17 #Python
You might like
php时区转换转换函数
2014/01/07 PHP
Aster vs Newbee BO3 第三场2.18
2021/03/10 DOTA
jquery animate图片模向滑动示例代码
2011/01/26 Javascript
JS字符串函数扩展代码
2011/09/13 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
JavaScript正则表达式之multiline属性的应用
2015/06/16 Javascript
js实现前端分页页码管理
2017/01/06 Javascript
JavaScript中object和Object的区别(详解)
2017/02/27 Javascript
微信小程序支付及退款流程详解
2017/11/30 Javascript
angularJS1 url中携带参数的获取方法
2018/10/09 Javascript
vue-router判断页面未登录自动跳转到登录页的方法示例
2018/11/04 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
javascript中call,apply,callee,caller用法实例分析
2019/07/24 Javascript
原生js实现html手机端城市列表索引选择城市
2020/06/24 Javascript
跟老齐学Python之集合(set)
2014/09/24 Python
python使用正则表达式分析网页中的图片并进行替换的方法
2015/03/26 Python
浅谈Python 字符串格式化输出(format/printf)
2016/07/21 Python
Python OpenCV利用笔记本摄像头实现人脸检测
2020/08/20 Python
PyQt4编程之让状态栏显示信息的方法
2019/06/18 Python
python导入不同目录下的自定义模块过程解析
2019/11/18 Python
纯css实现照片墙3D效果的示例代码
2017/11/13 HTML / CSS
美国汽车交易网站:Edmunds
2016/08/17 全球购物
Ajxa常见问题都有哪些
2014/03/26 面试题
客服实习的个人自我鉴定
2013/10/20 职场文书
公司营业员的自我评价
2014/03/04 职场文书
酒店开业庆典主持词
2014/03/21 职场文书
产品质量承诺书
2014/03/27 职场文书
岗位职责说明书
2014/05/07 职场文书
创先争优演讲稿
2014/09/15 职场文书
大学生联谊活动策划书(光棍节)
2014/10/10 职场文书
大班下学期幼儿评语
2014/12/30 职场文书
员工自我工作评价
2015/03/06 职场文书
SQL Server连接查询的实用教程
2021/04/07 SQL Server
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
2021/05/18 Vue.js
java设计模式--三种工厂模式详解
2021/07/21 Java/Android
Spring Cloud 中@FeignClient注解中的contextId属性详解
2021/09/25 Java/Android