*args 和 **kwargs 主要用于函数定义。 你可以将不定数量的参数传递给一个函数。
这里的不定的意思是:预先并不知道, 函数使用者会传递多少个参数给你, 所以在这个场景下使用这两个关键字。 *args 是用来发送一个非键值对的可变数量的参数列表给一个函数
*args example:
1.
def test(*args):
for arg in args:
print('another lanuage',arg)
if __name__ == '__main__':
test('python','java','ruby','lua')
2.
def test(name1,name,name2,name3):
print('another lanuage',name1)
print('another lanuage',name)
print('another lanuage',name2)
print('another lanuage',name3)
if __name__ == '__main__':
args=('python','java','lua','c')
test(*args)
*args result:
1.
2.
**kwargs 允许你将不定长度的键值对, 作为参数传递给一个函数。 如果你想要在一个函数里处理带名字的参数, 你应该使用**kwargs。
**kwargs example:
1.
def test(**kwargs):
for key,value in kwargs.items():
print('another lanuage',key,value)
if __name__ == '__main__':
test(name='python',name1='java',name2='ruby',name3='lua')
2.
def test(name1,name,name2,name3):
print('name1',name1)
print('name',name)
print('name2',name2)
print('name3',name3)
if __name__ == '__main__':
kwargs={"name":'python',"name1":'java',"name2":'ruby',"name3":'lua'}
test(**kwargs)
**kwargs result:
1.
2.