python函数通过def定义,核心是参数传入(位置、关键字、默认、可变)和return行为;参数顺序为位置→默认→args→*kwargs;默认参数慎用可变对象;return决定退出时机,多值返回本质为元组;类型提示提升可读性。

Python函数通过def关键字定义,核心在于参数传入方式和返回值处理。理解参数类型(位置、关键字、默认、可变)与return行为,是写出清晰、健壮函数的基础。
参数的四种常见形式
Python函数支持灵活的参数传递机制:
-
位置参数:按顺序传入,必须提供,如
def add(a, b): return a + b中调用add(2, 3); -
关键字参数:通过形参名赋值,顺序无关,如
add(b=3, a=2)效果相同; -
默认参数:在定义时指定默认值,调用时可省略,如
def greet(name, msg="Hello"):,调用greet("Alice")自动使用"Hello"; - *args 和 **kwargs:分别接收任意数量的位置参数(元组)和关键字参数(字典),适合写通用或装饰器类函数。
可变参数的注意事项
*args和**kwargs虽灵活,但需注意顺序和可读性:
- 参数顺序必须为:位置参数 → 默认参数 → *args → **kwargs;
- 避免过度依赖
**kwargs隐藏关键参数,降低函数可维护性; - 默认参数若为可变对象(如列表、字典),可能引发意外共享状态,建议用
None作默认值并在函数内初始化。
return语句的行为细节
return不仅返回值,还决定函数退出时机:
立即学习“Python免费学习笔记(深入)”;
- 无
return或仅return语句,函数返回None; - 多个
return可出现在不同分支,但每次调用只执行其中一个; - 返回多个值(如
return x, y)实际是返回一个元组,支持解包:a, b = func(); - 函数体末尾隐式返回
None,无需显式写出。
函数签名与类型提示(可选增强)
从Python 3.5起支持类型提示,提升代码可读性和工具支持:
- 语法如
def greet(name: str, times: int = 1) -> str:,明确参数类型和返回类型; - 类型提示不影响运行时行为,但配合mypy等工具可提前发现类型错误;
- 常用类型包括
Optional[str]、List[int]、Union[float, int]等,需导入typing模块。
不复杂但容易忽略。










