写函数时,预先可能不确定会传入多少个参数,以及传入的方式,这时候可以通过不定参的形式传递
例如
def test(*args,**kwargs):
print("args:",args)
print("kwargs:",kwargs)
if __name__ == "__main__":
test(1,2,3,4,a=5,b=6,c=7)
args: (1, 2, 3, 4)
kwargs: {'a': 5, 'b': 6, 'c': 7}
*args用来接收不命名参数,以元组形式保存,**kwargs用来接收命名参数,以字典形式保存
args和kwargs只是习惯命名,关键在于 * 和 **,例如:
def test(*vars1,**vars2):
print("vars1:",vars1)
print("vars2:",vars2)
if __name__ == "__main__":
test(1,2,3,4,a=5,b=6,c=7)
vars1: (1, 2, 3, 4)
vars2: {'a': 5, 'b': 6, 'c': 7}
* 必须出现在 **前面,例如:
def test(**kwargs,*args):
print("args",args)
print("args",kwargs)
if __name__ == "__main__":
test(1,2,3,4,a=5,b=6,c=7)
def test(**kwargs,*args):
^
SyntaxError: invalid syntax