python基础之匿名函数详解


Posted in Python onApril 21, 2021

1.匿名函数介绍

匿名函数指一类无须定义标识符的函数或子程序。Python用lambda语法定义匿名函数,只需用表达式而无需申明。

在python中,不通过def来声明函数名字,而是通过 lambda 关键字来定义的函数称为匿名函数。

lambda函数能接收任何数量(可以是0个)的参数,但只能返回一个表达式的值,lambda函数是一个函数对象,直接赋值给一个变量,这个变量就成了一个函数对象。

2.语法

lambda 参数:表达式

3.使用场景

(1)需要将一个函数对象作为参数来传递时,可以直接定义一个lambda函数(作为函数的参数或是返回值)

(2)要处理的业务符合 lambda 函数的情况(任意多个参数和一个返回值),并且只有一个地方会使用这个函数,不会在其他地方重用,可以使用lambda函数

4.匿名函数和普通函数的对比

def sum_func(a, b, c):
    return a + b + c
# 将匿名函数对象赋值给 sum_lambda
sum_lambda = lambda a, b, c: a + b + c
print(sum_func(1, 2, 3))  # 6
print(sum_lambda(1, 2, 3))  # 6

5.匿名函数的多种形式

# 无参数
lambda_a = lambda :100
print(lambda_a())  # 100
 
# 一个参数
lambda_b = lambda num: num * 10
print(lambda_b(1))  # 10
 
# 多个参数
lambda_c = lambda a, b, c: a + b + c
print(lambda_c(1, 10, 100))  # 111
 
# 表达式分支
lambda_d = lambda x: x if x > 5 else x + 1
print(lambda_d(4))  # 5
print(lambda_d(6))  # 6

6.lambda 作为一个参数传递

def sub_func(a, b, func):
    print("a = ", a)
    print("b = ", b)
    print("a - b = ", func(a, b))
sub_func(3, 2, lambda a, b: a - b)
# 结果:
#     a =  3
#     b =  2
#     a - b =  1

7. lambda函数与python内置函数配合使用

sorted是Python中对列表排序的内置函数,我们使用lambda来获取排序的key

member_list = [
    {"price": 9},
    {"price": 999},
    {"price": 99}
]
new_list = sorted(member_list, key=lambda dict_: dict_["price"])
print(new_list)  #  [{'price': 9}, {'price': 99}, {'price': 999}]
number_list = [100, 77, 69, 31, 44, 56]
num_sum = list(map(lambda x: {str(x): x}, number_list))
print(num_sum)  # [{'100': 100}, {'77': 77}, {'69': 69}, {'31': 31}, {'44': 44}, {'56': 56}]

map是Python中用来做映射的一个内置函数,接收两个参数,第一个参数是一个函数,第二个参数是一个可迭代对象,map会遍历可迭代对象的值,然后将值依次传递给函数执行。我们使用lambda来实现map中的函数参数。

8.lambda 作为函数的返回值

def discount_func(discount):
    return lambda price: discount * price
 
p = discount_func(0.8)
print(p)  # <function discount_func.<locals>.<lambda> at 0x00000241352BAC10>
print(p(100))  # 80.0

 匿名函数可以作为一个函数的返回值,上面函数discount_func返回一个设定了折扣的匿名函数对象,调用这个对象,传入价格,就可以得到折扣后的价格

到此这篇关于python基础之匿名函数详解的文章就介绍到这了,更多相关python匿名函数内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现360的字符显示界面
Feb 21 Python
使用Python的Twisted框架编写简单的网络客户端
Apr 16 Python
从Python程序中访问Java类的简单示例
Apr 20 Python
Python引用模块和查找模块路径
Mar 17 Python
Python文件夹与文件的相关操作(推荐)
Jul 25 Python
Python scikit-learn 做线性回归的示例代码
Nov 01 Python
python3使用SMTP发送简单文本邮件
Jun 19 Python
python flask实现分页的示例代码
Aug 02 Python
Python之lambda匿名函数及map和filter的用法
Mar 05 Python
Pyqt清空某一个QTreeewidgetItem下的所有分支方法
Jun 17 Python
Django框架实现在线考试系统的示例代码
Nov 30 Python
python geopandas读取、创建shapefile文件的方法
Jun 29 Python
Python基础之字符串格式化详解
Apr 21 #Python
python 自动刷新网页的两种方法
python实现Thrift服务端的方法
python基础之while循环语句的使用
看看如何用Python绘制小米新版天价logo
基于python制作简易版学生信息管理系统
基于python的matplotlib制作双Y轴图
You might like
php实现快速排序法函数代码
2012/08/27 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
2014/01/19 PHP
Yii实现MySQL多数据库和读写分离实例分析
2014/12/03 PHP
php 在线导入mysql大数据程序
2015/06/11 PHP
PHP中foreach()用法汇总
2015/07/02 PHP
zeroclipboard复制到剪切板的flash
2010/08/04 Javascript
JS 实现导航栏悬停效果(续2)
2013/09/24 Javascript
用js正确判断用户名cookie是否存在的方法
2014/01/28 Javascript
JS正则验证多个邮箱完整实例【邮箱用分号隔开】
2017/04/19 Javascript
微信小程序之多文件下载的简单封装示例
2018/01/29 Javascript
Vue+Mock.js模拟登录和表格的增删改查功能
2018/07/26 Javascript
AngularJS 多指令Scope问题的解决
2018/10/25 Javascript
了解JavaScript表单操作和表单域
2019/05/27 Javascript
js正则匹配多个全部数据问题
2019/12/20 Javascript
vue实现简单全选和反选功能
2020/09/15 Javascript
JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码
2020/12/01 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
2020/12/30 Vue.js
[46:47]2014 DOTA2国际邀请赛中国区预选赛 DT VS HGT
2014/05/22 DOTA
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
Python实现简单状态框架的方法
2015/03/19 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
2018/08/02 Python
python 实现12bit灰度图像映射到8bit显示的方法
2019/07/08 Python
python简单实现矩阵的乘,加,转置和逆运算示例
2019/07/10 Python
python3模拟实现xshell远程执行liunx命令的方法
2019/07/12 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
PyTorch中的padding(边缘填充)操作方式
2020/01/03 Python
Python3监控疫情的完整代码
2020/02/20 Python
Python函数基本使用原理详解
2020/03/19 Python
英国领先的办公用品供应商:Viking
2016/08/01 全球购物
微软新西兰官方网站:Microsoft New Zealand
2018/08/17 全球购物
英国剑桥包中文官网:The Cambridge Satchel Company中国
2018/11/06 全球购物
小学生感恩演讲稿
2014/04/25 职场文书
社区活动总结报告
2014/05/05 职场文书
大学毕业论文致谢词
2015/05/14 职场文书
学校元旦晚会开场白
2015/05/29 职场文书
win10电脑关机快捷键是哪个 win10快速关机的几种方法
2022/08/14 数码科技