多个实参,放到一个元组里面,以*开头,可以传多个参数;**是形参中按照关键字传值把多余的传值以字典的方式呈现
【Python 可变参数*args和**kwargs】*args:表示的就是将实参中按照位置传值,多出来的值都给args,且以元组的方式呈现,
主要是 用来表示函数接收可变长度的非关键字参数列表作为函数的输入。
**kwargs:表示的就是形参中按照关键字传值把多余的传值以字典的方式呈现 key-value形式
主要是 用来表示函数接收可变长度的关键字参数列表作为函数的输入。
*args: 就是以元组的形式来呈现多余的参数,接受非关键字的参数
比如
def foo(x, *args):
print(x)
print(args)
foo(1,2,3,4)
## 输出
1
(2, 3, 4)
当没有传递多余的参数时,args就是默认的空元祖
def foo(x, *args):
print(x)
print(args)
foo(1)
#输出
1
()
可以使用*号将元组解一下
def foo(x,y,z):
print(x)
print(y)
print(z)foo(*(1,2,3))
##输出
1
2
3
**kwargs: 就是以字典的形式来呈现多余的参数,接受关键字的参数
def foo(x,**kwargs):
print(x)
print(kwargs)
foo(1,a=2,b=3,c=4,d=5)
## 输出
1
{'a': 2, 'b': 3, 'c': 4, 'd': 5}
def foo(x,*args,**kwargs):
print(x)
print(args)
print(kwargs)
foo(1,2,3,4,y=1,a=2,b=3,c=4)
##输出
# 1
# (2, 3, 4)
# {'y': 1, 'a': 2, 'b': 3, 'c': 4}def foo(*args, **kwargs):
print(args)
print(kwargs)foo(1, 2, 3, 4, y=1, a=2, b=3, c=4)
# 运行结果
# (1, 2, 3, 4)
# {'y': 1, 'a': 2, 'b': 3, 'c': 4}
使用*号解一下 字典,输出是键 key
def foo(a,b,c,d):
print(a)
print(b)
print(c)
print(d)
foo(*{"a":2,"b":3,"c":4,"d":5})
## 输出
a
b
c
d
使用**号解一下 字典,输出是 值 value
def foo(a,b,c,d):
print(a)
print(b)
print(c)
print(d)
foo(**{"a":2,"b":3,"c":4,"d":5})
## 输出
2
3
4
5