王亟亟的Python学习之路(10)-匿名函数

简介:

转载请注明出处:王亟亟的大牛之路

又有好多天没有碰Python的东西了,下午抽出点时间就补一篇介绍匿名函数

匿名函数在很多语言里都有,它可以使代码更加简洁、紧凑,模块化程度更高。

在jdk8里发现了lambda表达式的影子

以前我们要循环一个集合需要这样

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);  

for (int number : numbers) {  
    System.out.println(number);  
} 

现在可以这样

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);  

numbers.forEach((Integer value) -> System.out.println(value)); 

那么这么做的优势是什么?

1.不一定需要顺序处理List中的元素,顺序可以不确定

2.可以并行处理,充分利用多核CPU的优势

3.有利于JIT编译器对代码进行优化


我们回到Python,那么Python是如何操作的呢?

一个自增的方法

def add(x):
    return x + x

print(add(2))

结果:4

那么用户匿名函数如何实现呢?

v = lambda x: x + x

print(v(2))

结果:4

语法:

lambda [arg1[, arg2, ... argN]]: expression

在上面的例子里

x 为lambda函数的一个参数

: 分割符

在lambda函数中不能有return,其实:后面就是返回值所以也就返回了传入的2+2=4

这里还是把表达式指向了一个对象,不然打印出来就是

<function <lambda> at 0x101c6ef28>

为什么要用匿名函数?

  1. 程序一次行使用,所以不需要定义函数名,节省内存中变量定义空间

  2. 如果想让程序更加简洁时。

那我们再来说说其他的几种实现

有默认值的匿名函数

list = lambda x=3: x + 3

print('3为默认值', list(), list(5))
list1 = lambda x: x + 3
print('无默认值', list1(1))

结果:
3为默认值 6 8
无默认值 4

如果传参就把X等于传入的参数,如果不传参那就为默认值

# 像变量一样的匿名函数

v1 = lambda: 123
print('无参数匿名函数', v1())

结果:

无参数匿名函数 123
# 传入多个参数的匿名函数,但是这种模式不支持多个参数有默认值

list2 = lambda z, x, c=3: z + x + c
print('传入多个参数的匿名函数', list2(1, 2, 5))

结果:

传入多个参数的匿名函数 8

源码地址:https://github.com/ddwhan0123/PythonExample/blob/master/示例/l9Demo.py

目录
相关文章
|
2月前
|
机器学习/深度学习 Python
堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能
本文深入探讨了堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能。文章详细介绍了堆叠的实现步骤,包括数据准备、基础模型训练、新训练集构建及元学习器训练,并讨论了其优缺点。
68 3
|
2月前
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
38 4
|
19天前
|
Python 容器
Python学习的自我理解和想法(9)
这是我在B站跟随千锋教育学习Python的第9天,主要学习了赋值、浅拷贝和深拷贝的概念及其底层逻辑。由于开学时间紧张,内容较为简略,但希望能帮助理解这些重要概念。赋值是创建引用,浅拷贝创建新容器但元素仍引用原对象,深拷贝则创建完全独立的新对象。希望对大家有所帮助,欢迎讨论。
|
2月前
|
搜索推荐 Python
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
140 67
|
1天前
|
数据可视化 数据挖掘 大数据
1.1 学习Python操作Excel的必要性
学习Python操作Excel在当今数据驱动的商业环境中至关重要。Python能处理大规模数据集,突破Excel行数限制;提供丰富的库实现复杂数据分析和自动化任务,显著提高效率。掌握这项技能不仅能提升个人能力,还能为企业带来价值,减少人为错误,提高决策效率。推荐从基础语法、Excel操作库开始学习,逐步进阶到数据可视化和自动化报表系统。通过实际项目巩固知识,关注新技术,为职业发展奠定坚实基础。
|
10天前
|
Python
Python学习的自我理解和想法(10)
这是我在千锋教育B站课程学习Python的第10天笔记,主要学习了函数的相关知识。内容包括函数的定义、组成、命名、参数分类(必须参数、关键字参数、默认参数、不定长参数)及调用注意事项。由于开学时间有限,记录较为简略,望谅解。通过学习,我理解了函数可以封装常用功能,简化代码并便于维护。若有不当之处,欢迎指正。
|
2天前
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
14 2
|
21天前
|
存储 索引 Python
Python学习的自我理解和想法(6)
这是我在B站千锋教育学习Python的第6天笔记,主要学习了字典的使用方法,包括字典的基本概念、访问、修改、添加、删除元素,以及获取字典信息、遍历字典和合并字典等内容。开学后时间有限,内容较为简略,敬请谅解。
|
25天前
|
存储 程序员 Python
Python学习的自我理解和想法(2)
今日学习Python第二天,重点掌握字符串操作。内容涵盖字符串介绍、切片、长度统计、子串计数、大小写转换及查找位置等。通过B站黑马程序员课程跟随老师实践,非原创代码,旨在巩固基础知识与技能。
|
30天前
|
Python
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
49 18