该函数可以用来获取列表中多个(两个及两个以上)元素的平均值。

def average(*args):
return sum(args, 0.0) / len(args)

average(*[1, 2, 3]) # 2.0
average(*(1, 2, 3)) # 2.0
average(*{1, 2, 3}) # 2.0
average(1, 2, 3) # 2.0

原理:​​sum(args, 0.0)​​​表示将输入的参数​​args​​​全部加起来,​​0.0​​​表示的是开始的值,也就是说从​​0​​​开始将​​args​​​的值全部加起来,这里的​​args​​​为list(列表)或者tuple(元胞)或者set(集合),理论上也可以为dict(字典),这里不做讨论。因此​​sum(args, 0.0)​​​的值为​​6.0​​​,​​len(args)​​​的值为​​3​​​,最终结果会是浮点数类型​​2.0​​​。
我们可以用以下的代码验证:

def add(*args):
print(sum(args, 0.0)) # 6.0
print(len(args)) # 3

add(1, 2, 3)

此外,​​*[1, 2, 3]​​​中的 ​​*​​​对应 ​​*args​​​中的​​*​​​,相当于把列表​​[1, 2, 3]​​​传递给了​​args​​​, ​​*(1, 2, 3)​​​与 ​​*{1, 2, 3}​​​同理,前者传入的是元胞,后者传入的是集合。至于直接写入​​1, 2, 3​​​本质上等同于​​*(1, 2, 3)​​​,python会将​​1,2,3​​​先转换为一个元胞整体后传递给 ​​*args​​参数。