这套课程按知识依赖排列。本篇的前置知识是:第 23、11、13 篇。学完后,你应该能够理解调用参数与函数签名的绑定规则。
本篇要解决的问题
本篇只处理“默认参数、关键字参数与可变参数”这一件事。示例基于 Python 3.14.6,在 macOS 环境核验;除明确标注的终端命令外,代码本身只使用 Python 标准能力。
先看清一个容易误解的细节
调用产生的实参需要绑定到函数签名中的形参。位置参数按顺序绑定,关键字参数按名称绑定,缺省位置才使用默认值。
核心概念
- 必需参数应放在有默认值的参数之前。
*args在函数内部是元组,适合数量可变的位置参数。**kwargs在函数内部是字典;只在确实需要开放关键字集合时使用。
跟着示例运行
把下面代码保存到本课脚本并运行:
def build_title(name, level="基础"):
return name + "|" + level
print(build_title("Python"))
print(build_title(name="异常处理", level="进阶"))
def total(*numbers):
return sum(numbers)
print(total(10, 20, 30))
预期结果:
Python|基础
异常处理|进阶
60
输出中包含环境路径、集合元素或日志格式时,具体文字和顺序可能随本机环境变化;判断是否成功应以本篇说明的关键结果为准。
按执行顺序拆开看
- 第一次调用只提供必需参数,
level使用默认值;第二次按参数名绑定两个实参。 *numbers把多个位置实参收集为元组,函数再将元组交给sum()。
再看一个具体细节
位置参数、关键字参数和默认值的绑定优先级可以拆成三个步骤。
先绑定调用方明确提供的实参,再检查是否重复或缺失,最后为未绑定的可选参数填入默认值。
初学者容易混淆的地方
- 把可变列表直接作为默认参数,导致不同调用共享同一个对象。基础写法优先使用
None再在函数内创建。 - 同时用位置和关键字给同一形参传值,解释器会报告重复绑定。
练习
- 给问候函数增加默认称呼。
- 编写接收任意数量分数并返回总分的函数。
练习应先独立完成,再通过增加 print 输出或检查文件内容观察中间状态。当前课程尚未讲到的能力,不要求提前搜索复杂写法。
本篇边界
本篇目标是理解调用参数与函数签名的绑定规则。没有展开的高级机制会放到后续课程;先确保能够解释示例中每一行代码,再进入下一篇。
相关文章
01|Python 程序从源码到输出经历了什么
面向按顺序学习 Python 的初学者,本篇在零基础上,帮助读者理解源代码、解释器和输出之间的关系。
02|在 macOS 安装并确认 Python 3 环境
面向按顺序学习 Python 的初学者,本篇在第 01 篇知识上,帮助读者在 macOS 中确认 Python 3.14 和 pip 是否可用。
03|交互式解释器和 Python 脚本怎么选择
面向按顺序学习 Python 的初学者,本篇在第 02 篇知识上,帮助读者根据任务选择 REPL 或 `.py` 脚本。
04|建立第一个 Python 项目目录
面向按顺序学习 Python 的初学者,本篇在第 03 篇知识上,帮助读者理解当前目录并正确运行项目脚本。

