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