1. Python函数基础概念
1.1 函数的核心价值
在Python开发中,函数是将代码模块化的基本单元。我见过太多新手开发者习惯把所有逻辑堆砌在一个脚本里,导致代码难以维护。函数的核心价值在于:
- 逻辑封装:把特定功能封装成独立单元,比如用户验证、数据清洗等
- 代码复用:避免重复编写相同逻辑,减少代码量30%-50%
- 调试简化:可以单独测试每个函数,快速定位问题
举个例子,电商系统中计算订单总价的逻辑可能被多处调用:
python复制def calculate_total(items, discount=0):
"""计算订单总价(含折扣)"""
subtotal = sum(item['price'] * item['quantity'] for item in items)
return subtotal * (1 - discount/100)
1.2 函数设计原则
根据我的项目经验,好的函数应该遵循SOLID原则中的单一职责原则:
- 功能单一:一个函数只做一件事(如"验证邮箱格式"而非"验证用户信息")
- 命名明确:动词开头,如
get_user()、validate_email() - 参数精简:理想情况下不超过3个参数,过多应考虑使用对象
- 无副作用:避免修改外部变量,纯函数更易测试
提示:使用
type hints可以显著提升代码可读性python复制def send_email(to: str, subject: str, body: str) -> bool:
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 函数参数深度解析
2.1 参数传递机制
Python的参数传递是"对象引用传递",这个特性经常让新手踩坑:
python复制def update_list(items):
items.append(4) # 修改会影响原列表
my_list = [1, 2, 3]
update_list(my_list)
print(my_list) # [1, 2, 3, 4]
但对于不可变对象:
python复制def increment(num):
num += 1 # 新建局部变量
x = 10
increment(x)
print(x) # 仍然是10
2.2 参数类型最佳实践
位置参数
- 必须参数应该放在最前面
- 相关参数应该相邻排列
python复制# 不好的写法
def create_user(email, username, age, password, is_admin=False)
# 改进后
def create_user(username, password, email, *, age=None, is_
