☰
Python68:核心语法-函数进阶-匿名函数(lambda表达式)
2026/10/23 9:13:37 网站建设 项目流程

命名函数、匿名函数

匿名函数

匿名函数指的是没有名称的函数,需要通过lambda表达式来声明函数,可以简化简单函数的编写(单行表达式)。

lambda表达式所定义出来的匿名函数,它的函数体的逻辑只能是一个单行的表达式,不能是复杂的逻辑;如果是复杂的逻辑,只能使用命名函数来定义。

上面定义出来的两个匿名函数是没有任何意义的,因为它只是定义了两个函数,并没有调用。没有调用的话,这两个函数是永远不会执行的,由于它没有名字,所以是无法直接调用的,如果想去调用这两个函数,这时候需要将函数赋值给一个变量。

将函数赋值给一个变量后,如上,out_line(和add)其实就是一个函数,就可以基于out_line变量名来调用这个函数了,因为它本质就是一个函数……这就是匿名函数的语法。

匿名函数的使用场景:
注意:函数逻辑比较简单(单行表达式)且只在一个地方使用时,可以考虑使用匿名函数,简化书写(通常作为高阶函数的参数使用)。

注意:匿名函数中可以返回结果,也可以不返回结果。返回结果时,不需要写return,表达式的运行结果就是要返回的结果。

# 匿名函数 # 需求1:打印一个分割线 def outline(): print("------------------") outline() outline2 = lambda : print("-----------------") outline2() # 需求2:计算两个数之和 def add(x, y): return x + y print(add(1, 2)) add2 = lambda x, y: x + y print(add(100, 200))
D:\py_project_heima\.venv\Scripts\python.exe D:\py_project_heima\第二章\test.py ------------------ ----------------- 3 300
# 需求3:完成如下列表的排序操作,按照每一个元素的字符个数,从小到大排序; data_list = ["C++", "C", "Python", "Jack", "PHP", "Java", "Go", "JavaScript", "Rust"] data_list.sort() print(data_list) # ['C', 'C++', 'Go', 'Jack', 'Java', 'JavaScript', 'PHP', 'Python', 'Rust'] 这是按照字母的顺序排序的,跟编码有关 data_list.sort(key=lambda item: len(item)) # 匿名函数典型的应用场景 print(data_list) # ['C', 'Go', 'C++', 'PHP', 'Jack', 'Java', 'Rust', 'Python', 'JavaScript'] 按照每一个元素的字符个数,从小到大排序 data_list.sort(key=lambda item: len(item), reverse=True) print(data_list) # ['JavaScript', 'Python', 'Jack', 'Java', 'Rust', 'C++', 'PHP', 'Go', 'C'] 按字符个数,从大到小
['C', 'C++', 'Go', 'Jack', 'Java', 'JavaScript', 'PHP', 'Python', 'Rust'] ['C', 'Go', 'C++', 'PHP', 'Jack', 'Java', 'Rust', 'Python', 'JavaScript'] ['JavaScript', 'Python', 'Jack', 'Java', 'Rust', 'C++', 'PHP', 'Go', 'C']

小结:

1. 匿名函数的定义方式

2. 命名函数与匿名函数的选择?

  • 建议使用匿名函数的情况:函数逻辑简单,只在一个地方调用(常作为高阶函数的参数);
  • 建议使用命名函数的情况:函数逻辑复杂,需要多步操作,需要多个地方重复使用或需要加文档说明的场景。

代码的可读性和可维护性比简洁性更重要!


声明:本篇学习笔记参考黑马程序员相关课程,部分素材来源于网络公开资料及本人补充;文中为个人整理复盘,仅供学习交流使用。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询