大家好,我是正在实战各种AI项目的程序员晚枫。
上篇我们学了循环,能批量处理数据了。这篇来学函数——代码复用的核心武器。
学完这篇,你就能把重复的代码打包成工具,一行调用搞定,代码量减少80%,维护成本大幅下降。
什么是函数?
想象你在公司工作,每天都要寄快递:
- 填单子 → 打电话 → 等快递员 → 包装 → 交给他
如果每天都要完整走一遍,累不累?
现在公司引进了快递柜:你只需把东西放进去,一键下单,快递柜自动帮你搞定后续所有步骤。
**函数,就是代码里的"快递柜"**——你把数据放进去(传入参数),它自动执行打包好的流程,返回你想要的结果。
定义第一个函数
最简单的函数
1 | def say_hello(): |
逐行解释:
1 | def → 告诉Python,我要定义一个函数 |
调用函数
定义完函数,不会自动执行——你需要"叫它来做事":
1 | def say_hello(): |
💡 类比:定义函数就像写一份操作手册,放在书架上;调用函数就像临时拿出来用一次。
带参数的函数:传入数据
给函数传入信息,让它根据不同输入产生不同结果。
场景举例:打招呼但叫出名字
1 | def greet(name): |
💡 参数(parameter):定义函数时的占位符,叫
name
实参(argument):调用函数时传入的具体值,叫"张三"、"李四"
带返回值的函数:返回结果
有时候你不需要函数"打印"结果,而是需要它"返回"一个值给你:
1 | def add(a, b): |
运行结果:
1 | 3 + 5 = 8 |
💡 return 的作用:把结果交给调用者,之后还能用这个结果做其他事。如果函数没有
return,默认返回None。
三种参数类型
① 位置参数:按顺序来
1 | def introduce(name, city, job): |
② 关键字参数:指定名字来传
1 | introduce(city="上海", name="李四", job="设计师") |
③ 默认参数:给个默认值
1 | def greet(name, greeting="你好"): |
⚠️ 注意:默认参数要放在最后,不能放在必选参数前面!
返回多个值:其实是返回元组
Python函数可以一次性返回多个值:
1 | def get_stats(scores): |
运行结果:
1 | 最高分:92 |
变量作用域:哪里能看见哪里
局部变量 vs 全局变量
1 | name = "张三" # 全局变量:整个文件都能看见 |
想在函数里修改全局变量?加 global
1 | count = 0 # 全局计数器 |
💡 建议:尽量少用
global,多用参数和返回值——让函数只依赖传入的数据,不依赖外部变量,这样的函数更干净、更容易测试。
实战练习:写一个工具函数库
把常用的功能封装成函数,以后直接调用:
1 | # ========== 工具函数库 ========== |
运行结果:
1 | === 工具函数演示 === |
📚 推荐:Python 零基础实战营
系统学习Python,推荐这个免费入门课程 👇
| 特点 | 说明 |
|---|---|
| 🎯 专为0基础设计 | 门槛低,上手快 |
| 📹 配套视频讲解 | 配合文章学习效果更好 |
| 💬 专属答疑群 | 遇到问题有人带 |
| 🎁 实体书赠送 | 优秀学员送《Python编程从入门到实践》 |
本讲小结
| 概念 | 说明 |
|---|---|
def 函数名(): | 定义函数 |
| 参数 | 函数接收的输入 |
return 值 | 函数返回的结果 |
| 位置参数 | 按顺序传入 |
| 关键字参数 | 指定名字传入 |
| 默认参数 | 有默认值的参数 |
| 局部/全局变量 | 作用域不同 |
下节预告
学会了函数的定义和使用,下一篇来学函数参数进阶——*args和**kwargs,让函数能接收任意数量的参数。
课程导航
PS:函数是代码复用的基础。看到重复的代码,就想:"能不能封装成函数?"这个习惯养成了,你写代码的效率会翻倍。
