行者孙Python

內功篇-Day35 默认参数

📖 知识点

语法

def 函数名(形参1, 形参2=默认值):
    # 函数体
    代码

# 调用
函数名(实参1)         # 不传递第二个参数,自动使用默认值
函数名(实参1, 实参2) # 传入第二个参数,覆盖默认值

核心要点:

  1. 默认参数:定义函数的时候,直接给形参赋值 变量=值
  2. 规则:带默认值的参数必须放在没有默认值参数的后面,顺序不能颠倒,否则语法报错
  3. 调用时:
    • 不传这个参数 → 使用预先写好的默认值
    • 传入实参 → 新值替换默认值
  4. 坑点:尽量不要用可变对象(列表 / 字典)作为默认参数,入门阶段先记住这个提醒

示例代码

def greet(name, msg="欢迎来到Python练功房"):
    print(f"{name},{msg}")

# 只传name,msg使用默认值
greet("阿明")
# 传入第二个参数,覆盖默认内容
greet("小红", "今天坚持每日Kata!")

输出:

阿明,欢迎来到Python练功房
小红,今天坚持每日Kata!

🥋 Kata 实战任务

编写函数 student_info(name, level="入门") 需求:

  1. def 定义函数,形参 name,level 设置默认值为 "入门"
  2. 函数内部 return 返回拼接好的字符串 f"学员:{name},等级:{level}"
  3. 调用函数 2 次:
    • 第一次:只传入姓名 ("老王"),使用 level 默认值
    • 第二次:传入姓名 ("小李"),同时指定等级 "进阶"
  4. 外部接收返回值并打印结果

✅ 参考代码

def student_info(name, level="入门"):
    info_str = f"学员:{name},等级:{level}"
    return info_str

res1 = student_info("老王")
res2 = student_info("小李", "进阶")
print(res1)
print(res2)

运行输出:

学员:老王,等级:入门
学员:小李,等级:进阶

🤔 思考题

  1. 如果写成 def student_info(level="入门", name):,把默认参数放在普通参数前面,运行会报错吗?
  2. 调用 student_info("小张", level="高手"),这种写法是否可行?
‹ 返回目录
🏠首页 Python 📦资源 👤关于我