📖 知识点
语法
def 函数名(形参1, 形参2=默认值):
# 函数体
代码
# 调用
函数名(实参1) # 不传递第二个参数,自动使用默认值
函数名(实参1, 实参2) # 传入第二个参数,覆盖默认值
核心要点:
- 默认参数:定义函数的时候,直接给形参赋值
变量=值 - 规则:带默认值的参数必须放在没有默认值参数的后面,顺序不能颠倒,否则语法报错
- 调用时:
- 不传这个参数 → 使用预先写好的默认值
- 传入实参 → 新值替换默认值
- 坑点:尽量不要用可变对象(列表 / 字典)作为默认参数,入门阶段先记住这个提醒
示例代码
def greet(name, msg="欢迎来到Python练功房"):
print(f"{name},{msg}")
# 只传name,msg使用默认值
greet("阿明")
# 传入第二个参数,覆盖默认内容
greet("小红", "今天坚持每日Kata!")
输出:
阿明,欢迎来到Python练功房
小红,今天坚持每日Kata!
🥋 Kata 实战任务
编写函数 student_info(name, level="入门") 需求:
- def 定义函数,形参 name,level 设置默认值为
"入门" - 函数内部 return 返回拼接好的字符串
f"学员:{name},等级:{level}" - 调用函数 2 次:
- 第一次:只传入姓名
("老王"),使用 level 默认值 - 第二次:传入姓名
("小李"),同时指定等级"进阶"
- 第一次:只传入姓名
- 外部接收返回值并打印结果
✅ 参考代码
def student_info(name, level="入门"):
info_str = f"学员:{name},等级:{level}"
return info_str
res1 = student_info("老王")
res2 = student_info("小李", "进阶")
print(res1)
print(res2)
运行输出:
学员:老王,等级:入门
学员:小李,等级:进阶
🤔 思考题
- 如果写成
def student_info(level="入门", name):,把默认参数放在普通参数前面,运行会报错吗? - 调用
student_info("小张", level="高手"),这种写法是否可行?