*args和**kwargs
*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.