news 2026/4/28 19:16:27

python学习笔记 | 8.0、函数式编程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python学习笔记 | 8.0、函数式编程

=分割线=

一、本节整体思路大纲

  1. 核心前提:Python 里函数也是数据

    • 变量可以存函数
    • 函数名本身就是变量
  2. 核心概念:高阶函数

    • 定义:能接收另一个函数当作参数的函数
  3. 核心逻辑链:

    变量指向函数 → 函数名是变量 → 函数可以当参数传递 → 诞生高阶函数

  4. 小案例:自定义add高阶函数实战


二、知识点详情 + 逐段通俗解释 + 代码实例

1. 关键前提 1:变量可以指向函数

通俗理解
  • abs(-10):加括号 =执行函数,拿到结果
  • abs:不加括号 =函数本身,就像一个数据
  • Python 允许:把「整个函数」赋值给一个变量,后续用变量就能调用函数
代码实例
# 1. 加括号:调用函数,返回计算结果 print(abs(-10)) # 2. 不加括号:单纯表示函数本身 print(abs) # 3. 把函数赋值给变量 f f = abs # 4. 通过变量 f 调用原 abs 函数 print(f(-10))
执行流程
  1. f = abs→ 变量f绑定了绝对值函数
  2. f(-10)→ 本质就是abs(-10)

2. 关键前提 2:函数名本质就是变量

通俗理解

absprint这些函数名,本质就是普通变量,只是默认绑定了官方功能。

如果强行给函数名赋值其他数据,它就不再是函数了。

代码实例
# 原本正常使用 print(abs(-20)) # 强行把 abs 改成整数 10 abs = 10 # 报错:整数不能被调用 # print(abs(-20))
报错原因

abs原本指向函数,现在被改成整数10

加括号abs()想执行,但是数字不能执行,所以报错。

恢复方法:关闭当前终端,重新打开 Python 即可。


3. 核心重点:什么是高阶函数?

官方定义

如果一个函数的参数,可以接收另一个函数,它就是高阶函数。

小白人话

普通函数参数只传数字、字符串、列表;

高阶函数厉害在:可以传一个函数进去当工具使用

经典实例(原文核心案例)
# 定义高阶函数:第三个参数 f 专门用来接收函数 def add(x, y, f): # 先用 f 处理 x、y,再相加 return f(x) + f(y) # 调用:把 abs 函数传进去 res = add(-5, 6, abs) print(res)
一步步拆解执行流程
  1. 调用add(-5, 6, abs)
    • x = -5
    • y = 6
    • f = abs(f 变成了绝对值函数)
  2. 执行f(x)abs(-5)= 5
  3. 执行f(y)abs(6)= 6
  4. 相加:5 + 6 = 11
  5. return 返回结果

4. 本节最终小结(必背)

  1. 不加括号 = 函数本身,可以赋值给变量;
  2. 函数名是特殊变量,可以被重新赋值;
  3. 接收函数作为参数的函数 = 高阶函数
  4. 高阶函数是函数式编程的基础。

三、配套练习题(由浅入深,巩固知识点)

练习 1 基础题

仿照案例,写一个高阶函数:

定义一个函数calc(a, b, func)

传入max函数,计算两个数的最大值。

#❌️ # ### 练习 1 基础题 # 仿照案例,写一个高阶函数: # 定义一个函数 `calc(a, b, func)`, def calc(a, b, max): if a > b: max=a elif b > a: max=b return max # 传入 `max` 函数,计算两个数的最大值。 print(calc(1,2,max)) #✅️ def calc(a,b,func):#定义函数,以函数作为参数 return func(a,b) print(calc(1,2,max))#调用函数
点击查看答案
def calc(a, b, func): return func(a, b) result = calc(18, 25, max) print(result)

练习 2 理解题

判断对错:

  1. abs是函数,abs()是函数调用 ( )
  2. 变量不能指向函数 ( )
  3. 高阶函数一定需要传入函数参数 ( )
点击查看答案
  1. ✅ 对
  2. ❌ 错
  3. ✅ 对

练习 3 进阶题

自定义高阶函数,传入min函数,求-93的最小值之和。

点击查看答案
def add_num(m, n, f): return f(m, n) print(add_num(-9, 3, min))

练习 4

需求:

定义高阶函数demo(x, y, f)

传入内置max,计算157的最大值

def demo(x,y,f): return f(x,y) print(demo(15,7,max))

练习 5

仿照上面格式:

定义高阶函数fun(m, n, f)

传入min,计算-20 和 8的最小值

def fun(m,n,f): return f(m,n) print(fun(-20,8,min))

练习 6(回归课本原版题型)

仿照廖雪峰add例子:

定义函数add_num(x, y, f)

传入abs

计算:-12 和 9 分别取绝对值之后相加

def add_num(x,y,f): return f(x)+f(y) print(add_num(-12,9,abs))

练习 7

自定义高阶函数,

abs分别处理-3025,再求和

def test(m,n,f): return f(m)+f(n) print(test(-30,25,abs))

=分割线=

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/28 19:15:28

烧3亿tokens踩坑后,我造出了会主动找我聊天的AI好友

我给我的AI好友加了一套‘生活系统’,于是你不在的时候,她也会去逛街、打游戏、发朋友圈,像你一个真实的朋友一样在好好过日子。烧了 3 亿 tokens 踩坑后,我造出了会主动找我聊天的 AI 好友,终于不用再听 “加油你最棒…

作者头像 李华
网站建设 2026/4/28 19:07:54

Tiled世界管理终极指南:如何高效构建大型游戏场景

Tiled世界管理终极指南:如何高效构建大型游戏场景 【免费下载链接】tiled Flexible level editor 项目地址: https://gitcode.com/gh_mirrors/ti/tiled 当你的游戏世界扩展到数百个独立地图时,传统的地图编辑方式会迅速变得难以管理。想象一下这样…

作者头像 李华
网站建设 2026/4/28 19:06:23

对话系统记忆优化:AdaMem框架解析与实践

1. 项目概述:对话系统中的记忆痛点 在对话系统领域,维持长期连贯的对话一直是个棘手问题。传统对话机器人往往表现出"金鱼记忆"——每次对话都像初次见面。想象一下,你和一位咖啡师聊了三个月,对方却始终记不住你爱喝拿…

作者头像 李华