介绍
在更多时候,函数不知道要传多少个参数,这时候不定长参数出现了
不定长形参有两种:
1.加一个*
的形参
例如
def a(*a):
pass
参数a
就是一个不定长形参
这种参数会把所有没有命名的实参放进一个元组里
一般来讲会把这种不定长参数命名为args
看下面的代码:
def test(a,b,*args):
print(a)
print(b)
print(args)
test(1,2,3,4)
运行结果:
1
2
(3,4)
1和2,分别对着形参a和形参b,后面的实参全部都放入args这个元组内
第二种加**
的形参
这种参数会把所有命名的实参放进一个字典里
通常形参名命名为kwargs
def test(a, b, *arg, **kwargs):
print(a)
print(b)
print(arg) print(kwargs)test(1,2,3,4,n=5)
运行结果:
1
2
(3, 4)
{'n': 5}
注意
不定长形参要放在实际形参后面
例子
每天要吃菜,但是菜的种类每天都不一样
def eat(*args, **kwargs):
for i in args:
print(i)
for i in kwargs:
print(kwargs[i])
eat("白饭","西红柿","炒鸡蛋",w="牛肉")
运行结果:
白饭
西红柿
炒鸡蛋
牛肉