可变长度的参数(*与**的用法)
可变长度指的是在调用函数时,传入的值(实参)的个数不固定;
对于溢出的实参必须有对应的形参来接受
一、 可变长度的位置参数
- 形参中带*,形参名:用来接收溢出的位置实参,溢出的位置实参会被保存成元组的格式后赋值紧跟其后的形参名(*后可以任意名字,一般是args)
def func(a, b, *args): # args=(3, 4, 5, 6, 7, 8)
print(a, b, args, type(args))
func(1, 2, 3, 4, 5, 6, 7, 8)
结果:
1 2 (3, 4, 5, 6, 7, 8) <class 'tuple'>
# 求和
def math_sum(*args):
count = 0
for i in args:
count += i
return count
count = math_sum(1, 2, 3, 4, 5, 6, 7, 8, 9)
print(count)
- 实参中带*,可以将*后的值打散成位置实参
def func(a, b, c):
print(a, b, c)
func(*[1, 2, 3]) # 相当于func(1,2,3)
l = [11, 22, 33]
func(*l) # 相当于func(11,22,33)
结果:
1 2 3
11 22 33