*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.

*args和**kwargs

2.

*args和**kwargs

 

**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.

*args和**kwargs

2.

*args和**kwargs