Python函数参数包括位置参数、默认参数、关键字参数、args和kwargs,按顺序使用可提升函数灵活性。位置参数需按顺序传值;默认参数提供默认值且必须位于位置参数后;关键字参数通过“参数名=值”传参,提高可读性且须位于位置参数之后;args收集多余位置参数为元组;kwargs收集未定义的关键字参数为字典。组合顺序为:普通参数 → args → 默认参数 → *kwargs,遵循此规则可设计出更通用的函数。

Python 函数的参数有多种类型,每种都有不同的用途和使用方式。掌握这些参数能让你写出更灵活、可复用的函数。
位置参数(Positional Arguments)
这是最基础的参数类型,按传入顺序一一对应。
说明:定义函数时参数从左到右排列,调用时也必须按相同顺序传值。- 如果传少了会报错“missing”
- 传多了会报错“too many”
例子:
def greet(name, age):
print(f"你好 {name},你今年 {age} 岁")
greet("小明", 20) # 正确
greet(20, "小明") # 逻辑错误,但语法合法
默认参数(Default Arguments)
在定义函数时给参数设置默认值,调用时可不传。
立即学习“Python免费学习笔记(深入)”;
说明:带有默认值的参数必须放在位置参数后面。- 调用时若不传该参数,使用默认值
- 传了就覆盖默认值
例子:
def greet(name, msg="欢迎"):
print(f"{msg}, {name}!")
greet("小红") # 输出:欢迎, 小红!
greet("小红", "早上好") # 输出:早上好, 小红!
关键字参数(Keyword Arguments)
调用函数时通过“参数名=值”的方式传参,可以不按顺序。
说明:提高代码可读性,尤其参数多的时候。- 关键字参数可以和位置参数混用
- 但关键字参数必须写在位置参数之后
例子:
def create_user(name, age, city):
print(f"{name}, {age}岁, 居住地: {city}")
create_user(age=25, name="李四", city="北京") # 不按定义顺序也可以
create_user("王五", city="上海", age=30) # 混用也行
*args(可变位置参数)
接收任意多个位置参数,打包成一个元组。
说明:*args 能收集多余的非关键字参数。- 名字 args 可以换成别的,但习惯用 *args
- * 是关键符号
例子:
def sum_all(*args):
total = 0
for num in args:
total += num
return total
print(sum_all(1, 2, 3)) # 输出:6
print(sum_all(1, 2, 3, 4, 5)) # 输出:15
**kwargs(可变关键字参数)
接收任意多个关键字参数,打包成字典。
说明:用来处理不确定数量的命名参数。- **kwargs 收集所有未在函数定义中出现的关键字参数
- kwargs 是字典类型
例子:
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="张三", age=28, job="程序员")
输出:
name: 张三
age: 28
job: 程序员
参数组合使用的顺序
当多种参数共存时,必须遵守固定顺序:
格式:普通位置参数 → *args → 默认参数 → **kwargs正确例子:
def example(a, b, *args, c=10, **kwargs):
print("a:", a)
print("b:", b)
print("args:", args)
print("c:", c)
print("kwargs:", kwargs)
example(1, 2, 3, 4, c=99, x=100, y=200)
基本上就这些。理解每种参数的作用和使用场景,能让函数设计更合理。











