点击蓝字
关注我们
【Python小白速通】函数默认参数?说白了就是"给代码设个'懒人模式'"!
咱之前唠过函数参数,就像给干活的代码留"备注"——泡咖啡要3分糖、算奶茶要加珍珠,但总有人懒得每次都写备注咋办?比如点奶茶默认选"正常糖",点咖啡默认加"全脂奶",这就是**默认参数**的精髓!
简单说,默认参数就是给函数的"填空位"预设好答案,你不填就按预设来,填了就按你的来,主打一个"省心不费脑",像手机的"默认铃声",不想改就用自带的,想改也能随便换~
一、先唠透:啥是函数默认参数?(纯人话版)
先掰碎了说,不整专业术语:
- 普通参数:函数的"必填填空位",比如点奶茶必须选甜度,不传就做不了;
- 默认参数:函数的"选填填空位",预设了默认值,比如奶茶默认"5分糖",你不说就按这来,说了就按你说的来;
- 设置默认参数:定义函数时给参数赋值,比如`make_coffee(sugar=5)`,把"糖度"的默认值设为5分。
举个栗子:你去楼下奶茶店点单,老板默认给你做"5分糖+正常冰",你直接说"来一杯珍珠奶茶",老板就按默认做;你说"来一杯珍珠奶茶,0分糖",老板就按你的要求改——默认参数就是老板的"默认操作"!
二、实操!3种默认参数用法,小白也能秒会
咱从最简单的"基础默认参数"开始,一步步解锁,代码都标了"人话注释",复制就能跑~
姿势1:最基础的默认参数(懒人首选版)
给参数设个默认值,调用时不传就用默认,传了就覆盖,新手先拿捏这个!
python
#定义函数:泡咖啡,糖度默认5分,奶量默认250ml
def make_coffee(sugar=5, milk=250):
print(f"✅ 咖啡做好啦!糖度:{sugar}分,奶量:{milk}ml")
#调用函数1:啥都不传,用默认值(懒人模式)
make_coffee()
#调用函数2:只传糖度,奶量还用默认(改一部分)
make_coffee(0)
#调用函数3:两个都传,全覆盖(自定义模式)
make_coffee(2, 200)
👉 运行结果:
✅ 咖啡做好啦!糖度:5分,奶量:250ml
✅ 咖啡做好啦!糖度:0分,奶量:250ml
✅ 咖啡做好啦!糖度:2分,奶量:200ml
姿势2:默认参数+必传参数(混搭版)
函数里既有"必填项"又有"选填项",必传参数放前面,默认参数放后面,像点奶茶"必须选品类,甜度可选"!
python
#定义函数:必传参数(咖啡品类)在前,默认参数(糖度)在后
def make_coffee_v2(coffee_type, sugar=5):
print(f"✅ {coffee_type}做好啦!糖度:{sugar}分")
#调用函数1:传品类,用默认糖度
make_coffee_v2("拿铁")
#调用函数2:传品类+自定义糖度
make_coffee_v2("美式", 0)
👉 运行结果:
✅ 拿铁做好啦!糖度:5分
✅ 美式做好啦!糖度:0分
姿势3:关键字参数调用默认参数(防乱版)
参数多了怕传错?用"参数名=值"的方式调用,哪怕只改一个默认参数,也不用记顺序!
python
#定义函数:做奶茶,默认5分糖、正常冰、不加料
def make_milk_tea(sugar=5, ice="正常冰", add_on="无"):
print(f"✅ 奶茶做好啦!糖度:{sugar}分,冰度:{ice},加料:{add_on}")
#调用函数:只改"加料",其他用默认(不用记参数顺序)
make_milk_tea(add_on="珍珠")
#调用函数:改冰度+加料,糖度默认
make_milk_tea(ice="少冰", add_on="芋圆")
👉 运行结果:
✅ 奶茶做好啦!糖度:5分,冰度:正常冰,加料:珍珠
✅ 奶茶做好啦!糖度:5分,冰度:少冰,加料:芋圆
三、避坑小彩蛋:新手最容易踩的3个坑
1. 参数顺序别搞反:必传参数一定要放在默认参数前面!比如`def make_coffee(sugar=5, coffee_type):`会报错,Python会懵:"到底哪个是必须传的?" 就像点奶茶先选"甜度(可选)"再选"品类(必填)",老板肯定骂你——"没说啥奶茶,我咋做?"
2. 默认参数别用可变值:千万别给默认参数设`[]`(空列表)、`{}`(空字典)!比如:
python
def add_order(food, order_list=[]): # 踩坑版!
order_list.append(food)
return order_list
# 第一次调用:['汉堡'],第二次调用:['汉堡', '薯条'](列表会累加)
相当于奶茶默认加料"珍珠",结果你点两次,第二次多了一倍珍珠,纯纯踩坑!正确做法是设为`None`,再在函数里初始化:
python
def add_order(food, order_list=None): # 正确版!
if order_list is None:
order_list = []
order_list.append(food)
return order_list
3. 默认参数只初始化一次:默认参数的值在定义函数时就定了,不是每次调用都重新算!比如用`datetime.now()`当默认参数,每次调用都是同一个时间,像奶茶默认"现做",结果老板提前做好一堆,不管啥时候点都是凉的~
四、实用小技巧:默认参数的"神仙用法"
用默认参数做"常用配置",比如写个算打车费的函数,默认起步价10元、每公里2元,不用每次都传:
python
def calc_taxi_fee(distance, base_fee=10, per_km=2):
total = base_fee + (distance - 3) * per_km if distance > 3 else base_fee
print(f"✅ {distance}公里打车费:{total}元")
#日常打车:用默认费用(10元起步+每公里2元)
calc_taxi_fee(5)
#节假日打车:改每公里费用(起步价默认,只改单价)
calc_taxi_fee(5, per_km=3)
👉 运行结果:
✅ 5公里打车费:14元
✅ 5公里打车费:16元
总结
1. Python函数默认参数是给参数预设"懒人值",调用时不传就用默认,传了就覆盖,核心是"参数名=默认值";
2. 必传参数放前、默认参数放后,调用时可用关键字参数(参数名=值)防传错;
3. 避开"默认参数用可变值、参数顺序搞反"这两个坑,默认参数能让函数更灵活省心。

扫码关注我们
知识奇妙世界