一、函数定义:智能奶茶店的配方系统
1. 基础模板——标准饮品制作
函数就像奶茶店的配方机,def
是开机键,参数是定制选项,函数体是制作流程:
def 做奶茶(茶底, 小料):
"""根据顾客选择制作奶茶"""
成品 = f"{茶底}奶茶"
if 小料:
成品 += f"加{小料}"
print(f"您的{成品}已做好!")
这相当于在收银台预设了"四季春奶茶"基础款,等待顾客下单激活。就像奶茶师傅听到订单才开始操作,函数需要调用才会执行:
做奶茶("大红袍", "珍珠") # → 您的大红袍奶茶加珍珠已做好!
二、参数传递:超市促销的智慧
1. 位置参数——收银台的扫描顺序
超市收银时商品必须按顺序扫码,位置参数同理:
def 称重计价(商品名, 单价, 重量):
总价 = 单价 * 重量
print(f"{商品名}总价:{总价:.2f}元")
称重计价("苹果", 9.8, 1.5) # → 苹果总价:14.70元
若把苹果和价格顺序颠倒,就像收银员把价格标签贴错商品,系统会报错。这种严格顺序适合固定流程,如快递单号生成、考勤打卡记录。
2. 关键字参数——外卖订单的定制选项
外卖平台的点单系统允许自选甜度冰块,关键字参数同样灵活:
def 定制咖啡(容量, 温度="常温", 甜度="标准糖"):
print(f"制作{容量}杯{温度}{甜度}咖啡")
定制咖啡(容量="大杯", 甜度="半糖") # → 制作大杯常温半糖咖啡
就像顾客可以单独调整甜度而不影响其他选项,参数顺序不再受限。适合需要明确参数的场景,如医院挂号系统选择科室与医生。
三、默认参数:快递柜的智能预设
1. 基础设置——常规快递处理
快递柜默认开启24小时存放功能,默认参数让函数更智能:
def 包裹寄存(单号, 收件人, 超时提醒=48):
print(f"【{单号}】{收件人}请在{超时提醒}小时内取件")
包裹寄存("YT668899", "李女士") # → 使用默认48小时提醒
包裹寄存("SF223344", "王先生", 72) # → 定制72小时提醒
这就像快递柜对新用户展示默认设置,老客户可自行调整。常见于:
- 电商平台默认收货地址
- 会议系统默认30分钟提醒
- 智能家居默认温度设置
2. 陷阱规避——过期牛奶事件
默认参数若使用可变对象会引发意外,就像超市把过期牛奶放默认货架:
def 促销商品(商品, 库存=[]): # 错误示范!
库存.append(商品)
print(f"当前促销:{库存}")
促销商品("酸奶") # → 当前促销:['酸奶']
促销商品("鸡蛋") # → 当前促销:['酸奶', '鸡蛋']
正确做法应该像每天更换促销货架:
def 促销商品(商品, 库存=None):
库存 = [] if 库存 is None else 库存
# 后续操作...
四、参数组合:智能厨房管理系统
1. 综合点单系统
def 智能点餐(主菜, 配汤, 加料=None, 备注="堂食"):
"""
模拟餐厅订单处理系统
:param 主菜: 必选菜品(位置参数)
:param 配汤: 第二必选
:param 加料: 可选附加项(默认None)
:param 备注: 定制需求(默认堂食)
"""
订单详情 = f"{主菜}+{配汤}"
if 加料:
订单详情 += f"加{'+'.join(加料)}"
print(f"【{备注}】{订单详情}")
# 常规订单
智能点餐("红烧肉", "罗宋汤")
# → 【堂食】红烧肉+罗宋汤
# 定制订单
智能点餐("清蒸鲈鱼", "冬瓜盅", 加料=["姜丝", "香菜"], 备注="打包")
# → 【打包】清蒸鲈鱼+冬瓜盅加姜丝+香菜
这套系统融合了:
- 位置参数保证核心菜品
- 关键字参数灵活调整
- 默认参数减少重复输入
- 可变参数应对复杂需求
五、参数传递的深层原理:生鲜配送的保鲜机制
1. 不可变参数的"真空包装"
传递数字、字符串时像运送冷冻食品,原包装不受影响:
def 修改温度(当前温度):
当前温度 += 5
print(f"舱内温度升至{当前温度}℃")
运输温度 = 10
修改温度(运输温度) # → 舱内温度升至15℃
print(运输温度) # → 10(外部温度未变)
2. 可变参数的"活鱼运输"
传递列表、字典时像运送活鱼,车内操作影响整个水箱:
def 分拣蔬菜(菜筐):
菜筐.append("西兰花")
print(f"分拣后:{菜筐}")
当日菜品 = ["白菜", "萝卜"]
分拣蔬菜(当日菜品) # → 分拣后:['白菜','萝卜','西兰花']
print(当日菜品) # → 外部列表同步改变
这种特性可用于实时更新库存、多人协作编辑文档等场景。
六、特殊技巧:超市促销的排列组合
1. 解包操作——批量处理促销单
像用扫码枪快速录入整箱商品:
促销组合 = ("买一送一", "满100减20", "积分双倍")
def 应用促销(*活动):
print(f"生效活动:{','.join(活动)}")
应用促销(*促销组合) # → 生效活动:买一送一,满100减20,积分双倍
2. 字典拆包——会员定制服务
根据会员档案提供专属优惠:
会员资料 = {"姓名": "王女士", "等级": "钻石", "积分": 1500}
def 会员问候(姓名, 等级, 积分):
print(f"尊敬的{等级}会员{姓名},您有{积分}积分待兑换")
会员问候(**会员资料) # → 尊敬的钻石会员王女士,您有1500积分待兑换
避坑指南:
- 默认参数要设在最后,就像超市把促销货架放在常规区后面
4
- 混合使用时顺序:位置参数→默认参数→可变参数,如同收银流程(扫码→优惠券→附加服务)
- 慎用可变对象作为默认值,像每天更换促销商品避免过期
❤️❤️❤️❤️❤️❤️❤️
我会出一系列Python非常容易理解的案例文章,希望对家人们有所帮助
关注不迷路,点赞走好运!!!