1. 为什么函数是Python编程的基石
在Python开发中,函数就像乐高积木的基础模块。我十年前刚入行时,前辈就告诉我:"不会写函数的人,永远停留在脚本小子的阶段。"确实,当你在同一个.py文件里第三次复制粘贴相似代码时,就该考虑函数封装了。
函数的核心价值在于"一次定义,多次调用"。比如电商系统中计算折扣价的逻辑,可能出现在购物车、订单确认、促销活动等十几个地方。用函数封装后,不仅避免重复代码,当折扣规则变化时只需修改一处。这就是为什么所有Python风格指南(PEP 8)都强调函数的合理使用。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 函数定义深度解析
2.1 基础定义语法
Python使用def关键字定义函数,基本结构如下:
python复制def calculate_discount(price, rate=0.9):
"""计算商品折扣价
:param price: 原价
:param rate: 折扣率,默认9折
:return: 折后价格
"""
return price * rate
这里有几个关键点:
- 函数名应全小写加下划线,动词开头(如calculate_xxx)
- 参数可以设置默认值(rate=0.9),带默认值的参数必须放在最后
- 文档字符串(docstring)用三引号包裹,说明函数用途和参数
经验:在PyCharm等IDE中,规范的docstring能实现参数提示,这是专业开发的基本素养。
2.2 参数传递机制
Python的参数传递是"对象引用传递",新手常在这里踩坑:
python复制def update_list(items):
items.append('new') # 修改可变对象会影响原数据
my_list = [1, 2]
update_list(my_list)
print(my_list) # 输出[1, 2, 'new']
对于不可变对象(数字、字符串等),函数内修改不会影响外部变量。如果需要保护原始数据,可以使用copy模块或传入不可变对象。
2.3 返回值的最佳实践
Python函数可以返回多个值(实际上是元组解包):
python复制def analyze_data
