📖 知识点
什么是 *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 实战任务
任务需求:
定义函数
calc_sum(*args),接收任意多个数字函数内部遍历 args,计算所有数字累加总和
return 返回总和
分别调用:传入 1,2,3;传入 10,20,30,40;只传入 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🧠 思考题
如果调用
calc_sum(1,2,num=3),代码会报错吗?为什么?*args里面的数据是元组,元组和列表有什么区别?
行者孙Python