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

目录

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

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

6️⃣ Python 函数参数类型总结_第1张图片

方法速查表(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)  # 输出: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('测试成功!')

你可能感兴趣的:(Python基本数据类型,python,函数)