行者孙Python

內功篇-Day39 不定长参数 *args

📖 知识点

什么是 *args

  • *args 用于接收不定数量的位置参数

  • 所有传入的多余位置参数,会打包成元组 (tuple)存到 args 里

  • args 只是约定俗成名字,你可以写 *nums,但行业习惯统一用 *args

  • 定义函数时,*args 要放在普通位置参数后面

基础示例

def show_msg(*args):
    print(args)
    print(type(args))

show_msg("苹果")
show_msg("苹果", "香蕉", "橙子")

输出:

('苹果',)
<class 'tuple'>
('苹果', '香蕉', '橙子')
<class 'tuple'>

搭配普通参数:

def sum_base(base_num, *args):
    total = base_num
    for i in args:
        total += i
    return total

print(sum_base(10, 1,2,3))

⚠️ 注意:调用时只能传位置参数给 args,不能用关键字传参。

⚔️ Kata 实战任务

任务需求:

  1. 定义函数 calc_sum(*args),接收任意多个数字

  2. 函数内部遍历 args,计算所有数字累加总和

  3. return 返回总和

  4. 分别调用:传入 1,2,3;传入 10,20,30,40;只传入 5

  5. 打印每次计算结果

参考代码

def calc_sum(*args):
    total = 0
    for num in args:
        total += num
    return total

res1 = calc_sum(1, 2, 3)
res2 = calc_sum(10, 20, 30, 40)
res3 = calc_sum(5)

print(f"总和1:{res1}")
print(f"总和2:{res2}")
print(f"总和3:{res3}")

运行输出:

总和1:6
总和2:100
总和3:5

🧠 思考题

  1. 如果调用 calc_sum(1,2,num=3),代码会报错吗?为什么?

  2. *args 里面的数据是元组,元组和列表有什么区别?

‹ 返回目录
🏠首页 Python 📦资源 👤关于我