python *args **kwargs

  1. 传参的几种方法
    (1)位置传参:顾名思义,按照参数的先后顺序区分该参数。
    (2)关键字传参:关键字=参数的形式,不拘泥于参数传递的先后顺序
    (3)可变参数:*args,**kwargs

  2. *args**kwargs
    有的时候你不确定后续可能会传几个参数,所以可变参数这不就来了嘛
    args和kwargs不是必须的,但是*是必须的
    *:tuple类型
    **:字典类型
    如果一起用,要先args,再*kwargs

# 举例
def func(arg, *i, **j):
    print("arg:", arg)
    print("args:", i, "args类型:", type(i))
    # print("*args:", *i, "*args类型:", type(*i))  
    # type(*i)报错:TypeError: type.__new__() argument 2 must be tuple, not str
    print("*args:", *i)
    print("kwargs:", j, "kwargs类型:", type(j))
    print("**kwargs:", j, "**kwargs:", type(j))


func(1, 'beauty', 'handsome', '嗨', q='lala', e='baby')

'''
输出结果
arg: 1
args: ('beauty', 'handsome', '嗨') args类型: 
*args: beauty handsome 嗨
kwargs: {'q': 'lala', 'e': 'baby'} kwargs类型: 
**kwargs: {'q': 'lala', 'e': 'baby'} **kwargs: 
'''

你可能感兴趣的:(python *args **kwargs)