目录
-
- 方法速查表(5种参数)
- 1. 注意事项
- 2. 示例
-
- 位置参数
- 默认参数
- 可变参数(\*args)
- 关键字参数(\*\*kw)
- ️ 命名关键字参数(需指定参数名)
- 3. 参数组合推荐顺序
- 4. 小技巧回顾
- 5. 练习
Python 的函数参数设计非常灵活:支持
位置参数、默认参数、可变参数、关键字参数、命名关键字参数 等。合理使用可以让函数更强大、调用更简洁。

方法速查表(5种参数)
参数类型 |
定义方式 |
调用方式 |
描述 |
位置参数 |
def func(a, b) |
func(1, 2) |
按顺序传值 |
默认参数 |
def func(a, b=0) |
func(1) or func(1, 2) |
可选参数,设置默认值 |
可变参数 |
def func(*args) |
func(1, 2, 3) |
接收任意数量的位置参数 |
关键字参数 |
def func(**kw) |
func(a=1, b=2) |
接收任意数量的命名参数 |
命名关键字参数 |
def func(*, a, b=0) |
func(a=1) or func(a=1, b=2) |
指定参数名传值,通常配合* |
1. 注意事项
- ✅ 默认参数应指向不可变对象(如:None、str、int)
- ✅ 默认参数必须放在必选参数后面
- ✅ 命名关键字参数需要用
*
分隔(除非前面有 *args
)
- ✅ 参数顺序建议:必选 → 默认 → 可变 → 命名关键字 → 关键字
2. 示例
位置参数
def power(x, n):
return x ** n
power(2, 3)
默认参数
def greet(name, city='Beijing'):
print(f'Hi {name} from {city}')
greet('Tom')
greet('Lucy', 'Tokyo')
可变参数(*args)
def calc(*numbers):
return sum(n * n for n in numbers)
calc(1, 2, 3)
关键字参数(**kw)
def person(name, age, **kw):
print('Other info:', kw)
person('Alice', 30, city='Shanghai', job='Dev')
️ 命名关键字参数(需指定参数名)
def person(name, *, city='Beijing', job):
print(name, city, job)
person('Bob', job='Engineer')
3. 参数组合推荐顺序
def example(a, b, c=0, *args, d, **kw):
pass
调用:
example(1, 2, 3, 4, 5, d=6, x=7)
4. 小技巧回顾
场景 |
推荐做法 |
默认参数是列表等可变对象 |
用 None 替代,再判断 if L is None: |
用 tuple/list 调用可变参数 |
使用 *args |
用 dict 调用关键字参数 |
使用 **kw |
5. 练习
def mul(*args):
if len(args) == 0:
raise TypeError("mul() missing at least 1 argument (0 given)")
result = 1
for num in args:
result *= num
return result
print('mul(5) =', mul(5))
print('mul(5, 6) =', mul(5, 6))
print('mul(5, 6, 7) =', mul(5, 6, 7))
print('mul(5, 6, 7, 9) =', mul(5, 6, 7, 9))
if mul(5) != 5:
print('mul(5)测试失败!')
elif mul(5, 6) != 30:
print('mul(5, 6)测试失败!')
elif mul(5, 6, 7) != 210:
print('mul(5, 6, 7)测试失败!')
elif mul(5, 6, 7, 9) != 1890:
print('mul(5, 6, 7, 9)测试失败!')
else:
try:
mul()
print('mul()测试失败!')
except TypeError:
print('测试成功!')