> 技术文档 > 6️⃣ Python 函数参数类型总结

6️⃣ Python 函数参数类型总结


目录

    • 📘 方法速查表(5种参数
    • 1. 注意事项
    • 2. 示例
      • 🎯 位置参数
      • 🧩 默认参数
      • 📦 可变参数(\\*args)
      • 🧠 关键字参数(\\*\\*kw)
      • 🏷️ 命名关键字参数(需指定参数名)
    • 3. 参数组合推荐顺序
    • 4. 小技巧回顾
    • 5. 练习

Python 的函数参数设计非常灵活:支持 位置参数、默认参数、可变参数、关键字参数、命名关键字参数 等。合理使用可以让函数更强大、调用更简洁。

6️⃣ 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 ** npower(2, 3) # 输出:8

🧩 默认参数

def greet(name, city=\'Beijing\'): print(f\'Hi {name} from {city}\')greet(\'Tom\') # city 使用默认值greet(\'Lucy\', \'Tokyo\') # city 覆盖默认值

📦 可变参数(*args)

def calc(*numbers): return sum(n * n for n in numbers)calc(1, 2, 3) # 输出:14

🧠 关键字参数(**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\') # city 使用默认值

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): # 确保至少传入1个参数,否则抛出TypeError(与原测试逻辑一致) 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(\'测试成功!\')