Python 函数指南:从会用到用好

Python 函数指南:从会用到用好
在日常 Python 开发中,函数(Function)几乎是所有代码结构的基础。
不管是脚本工具、Web 服务,还是数据分析代码,函数都是让代码保持清晰、可复用、易维护的关键。
很多初学者会写函数,但往往写得不够“Pythonic”。这篇文章不讲枯燥语法,而是结合实际开发经验,聊一聊 Python 函数那些值得掌握的技巧。
一、什么是函数?
简单来说:
函数就是一段可以被重复调用的代码块。
在 Python 中,我们通过 def 来定义函数。
def greet(name):
print(f"Hello, {name}!")
调用函数:
greet("Alice")
输出:
Hello, Alice!
📌 这样做的好处是:
- 避免重复代码
- 提高代码可读性
- 方便维护和扩展
二、函数的基本结构
一个标准的 Python 函数通常包括以下部分:
| 组成部分 | 说明 |
|---|---|
def | 定义函数关键字 |
| 函数名 | 函数的名称 |
| 参数 | 输入数据 |
| 函数体 | 实际执行逻辑 |
return | 返回结果 |
示例:
def add(a, b):
result = a + b
return result
调用:
print(add(3, 5))
输出:
8
💡 经验建议:
函数最好只做一件事,这样代码更清晰。
三、参数的几种常见写法
Python 的函数参数非常灵活,这是很多人喜欢 Python 的原因之一。
1. 普通参数
def multiply(a, b):
return a * b
调用:
multiply(3, 4)
2. 默认参数
默认参数可以让函数更灵活。
def greet(name, message="Hello"):
print(f"{message}, {name}")
调用:
greet("Tom")
greet("Tom", "Hi")
输出:
Hello, Tom
Hi, Tom
⚠️ 注意:默认参数必须放在普通参数后面。
3. 可变参数 *args
当你不确定参数数量时,可以使用 *args。
def total(*numbers):
return sum(numbers)
调用:
total(1, 2, 3, 4)
输出:
10
args 实际上是一个 tuple。
4. 关键字参数 **kwargs
用于接收不固定数量的键值参数。
def print_info(**info):
for key, value in info.items():
print(key, value)
调用:
print_info(name="Alice", age=25)
输出:
name Alice
age 25
📌 在实际开发中,**kwargs 经常用于:
- 配置参数
- 框架扩展
- API 参数
四、返回值的技巧
函数不仅可以返回一个值,还可以返回多个值。
def get_user():
name = "Alice"
age = 25
return name, age
调用:
name, age = get_user()
本质上返回的是 tuple。
五、函数注解(Type Hint)
在实际项目中,建议加上 类型提示(Type Hint),可读性会大大提高。
def add(a: int, b: int) -> int:
return a + b
含义:
| 部分 | 说明 |
|---|---|
a: int | 参数类型 |
b: int | 参数类型 |
-> int | 返回值类型 |
📌 好处:
- IDE 自动提示
- 提高代码可读性
- 配合
mypy做静态检查
六、函数文档字符串(Docstring)
好的函数一定要有说明。
def add(a, b):
"""
返回两个数字的和
参数:
a (int): 第一个数字
b (int): 第二个数字
返回:
int: 两数之和
"""
return a + b
在 Python 交互环境:
help(add)
就可以查看文档。
📌 这是很多开源项目的标准写法。
七、Lambda(匿名函数)
当函数非常简单时,可以使用 lambda。
add = lambda a, b: a + b
等价于:
def add(a, b):
return a + b
常见用法:
numbers = [1, 2, 3, 4]
result = list(map(lambda x: x * 2, numbers))
输出:
[2, 4, 6, 8]
⚠️ 但在实际开发中:
lambda 适合简单表达式,不适合复杂逻辑。
八、函数设计的几个经验
在真实项目中,我通常遵循几个原则:
1️⃣ 函数要短
推荐:
10 ~ 30 行
太长说明需要拆分。
2️⃣ 函数只做一件事
坏例子:
函数既处理数据,又写数据库,又打印日志
好例子:
函数 A:处理数据
函数 B:保存数据库
函数 C:记录日志
3️⃣ 命名要清晰
推荐命名方式:
| 类型 | 示例 |
|---|---|
| 动词 + 名词 | get_user |
| 动词 + 结果 | calculate_total |
| 动词 | save |
避免:
func1()
doStuff()
test()
九、一个简单但真实的例子
假设我们要计算订单价格:
def calculate_order_price(price: float, quantity: int, discount: float = 0.0) -> float:
"""
计算订单总价
"""
total = price * quantity
total -= total * discount
return total
调用:
total = calculate_order_price(100, 3, 0.1)
print(total)
输出:
270
代码逻辑非常清晰。
十、总结
函数是 Python 编程中最重要的基础之一。
写函数不难,但写好函数需要经验。
最后给大家一个简短总结:
| 技巧 | 建议 |
|---|---|
| 函数长度 | 保持简短 |
| 函数职责 | 单一职责 |
| 参数设计 | 使用默认参数 |
| 类型提示 | 推荐使用 |
| 文档字符串 | 必写 |
📌 写代码的本质,其实是写给未来的自己和团队看的。
好的函数设计,会让代码在半年后依然清晰易懂。
如果你刚开始学习 Python,建议多看看一些优秀开源项目的代码,比如:
- FastAPI
- Requests
- Django
你会发现:
优秀的 Python 代码,函数设计都非常优雅。
更多推荐


所有评论(0)