python学习笔记 | 8.3、函数式编程-匿名函数

=分割线=

一、什么是匿名函数?

普通函数:需要起名字 ,用 def 定义。

匿名函数:不用起名字 ,临时用一下,用 lambda 关键字定义,一行写完。

适用场景:就简单一个计算逻辑,不想单独写一个 def 函数,省事

二、语法格式(死记这一个就行)

复制代码
lambda 参数: 表达式

拆解:

  1. lambda:固定开头,代表匿名函数
  2. 冒号前面:函数的参数(可以一个、多个、无参数)
  3. 冒号后面:只能写 1 个表达式 ,不用写 return,表达式结果自动返回

三、和普通函数对比,一眼看懂

普通有名函数

复制代码
def f(x):
    return x * x

等价的匿名函数

复制代码
lambda x: x * x

意思:接收一个参数x,返回 x*x 的结果。

四、官方例子拆解

复制代码
list(map(lambda x: x * x, [1,2,3,4,5]))
  1. map:把后面列表里的每一个数,都丢进前面的函数处理
  2. lambda x:x*x:每个数自己乘自己
  3. 结果:[1,4,9,16,25]

五、匿名函数 3 种常用写法(记下来够用一辈子)

1. 一个参数

复制代码
# 普通函数
def add1(x):
    return x+1

# 匿名函数
lambda x: x+1

2. 两个参数

复制代码
# 计算两数之和
lambda x,y: x + y

3. 没有参数

复制代码
# 直接返回固定值
lambda: 100 + 200

六、匿名函数可以赋值给变量(当成普通函数用)

匿名函数没名字,但可以赋值给一个变量,后面直接调用:

复制代码
# 把匿名函数存到变量f里
f = lambda x: x * x

# 像普通函数一样调用
print(f(5))  # 输出 25

七、课后练习:用匿名函数改造代码

原题代码(普通函数写法):

复制代码
def is_odd(n):
    return n % 2 == 1

L = list(filter(is_odd, range(1, 20)))
print(L)

(用 lambda 代替)

思路:

is_odd 作用是判断一个数是不是奇数:n % 2 == 1

直接把这个逻辑写成匿名函数塞进去就行:

复制代码
# 直接用lambda,不用单独定义is_odd函数
L = list(filter(lambda n: n % 2 == 1, range(1, 20)))
print(L)

运行结果:[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

八、必记总结(只背这 4 句)

  1. 匿名函数用 lambda,不用 def、不用起名字。
  2. 格式:lambda 参数: 表达式
  3. 只能写一个表达式,自动返回结果,不用写 return。
  4. 适合临时简单逻辑,搭配 map、filter 用最方便。

=分割线=filter

1. 一句话定义

filter = 过滤器

作用:把符合条件的留下来,不符合的丢掉

2. 语法格式

复制代码
filter(函数, 可迭代对象)

拆解:

  • 第一个参数:判断条件的函数(返回 True 或 False)

  • 第二个参数:要过滤的一堆数据(列表、range 等)

  • 规则:

    函数返回

    True

    → 留下

    函数返回

    False

    → 扔掉

    =分割线=

练习题 1

写一个匿名函数,接收参数 x,返回 x * 2

复制代码
lambda x:x*2

练习题 2

写一个匿名函数,接收两个参数 x, y,返回两数之和

复制代码
lambda x,y : x+y`

练习题 3

写一个匿名函数,接收参数 x,返回 x 的平方再加 5

复制代码
lambda x : (x*x)+5

练习题 4

写一个匿名函数,判断一个数是不是偶数,返回布尔值

复制代码
lambda x:x%2==0

练习题 5

把下面普通函数,改写成 lambda 匿名函数

复制代码
def calc(a):
    return a + 10

lambda a : a+10
相关推荐
四维迁跃1 小时前
Python Web开发如何防范SQL注入_使用参数化查询与ORM实践
jvm·数据库·python
星幻元宇VR1 小时前
VR单人地震体验平台助力防灾减灾教育
科技·学习·安全·vr·虚拟现实
minstbe1 小时前
【AI本体论研究学习】本体的核心元素:类、属性、实例与关系——拆解 OWL/RDF 四大基石
人工智能·学习
YJlio1 小时前
Windows Internals 读书笔记 10.3.3:Task Scheduler 架构详解
人工智能·windows·笔记·python·学习·chatgpt·架构
hopetomorrow1 小时前
学习路之PHP --PHP 常用扩展及作用表
开发语言·学习·php
2401_833033621 小时前
如何自动更新SQL标签状态_利用触发器实现基于逻辑的状态机
jvm·数据库·python
Lhan.zzZ1 小时前
笔记_2026.4.28_003
c++·笔记·qt·opencv
2401_831419441 小时前
mysql如何优化数据库文件写入速度_配置innodb刷盘策略
jvm·数据库·python
嵌入式小企鹅1 小时前
嵌入式面试宝典
学习·面试·嵌入式·嵌入式工程师·高薪offer