def f(*args, **kwargs):
print('args',args)
print('kwargs',kwargs)
f(7,8,9, a=1, b=2)
输出:
args (7, 8, 9)
kwargs {'a': 1, 'b': 2}
args 是一个元祖,也叫位置参数,调用函数的时候,位置参数要在关键字参数之前
kwargs是一个字典, 也叫关键字参数,
但实际调用函数,是f(7,8,9, a=1,b=2)
而不是f((7,8,9), {'a':1, 'b':2}), 这个要注意
当然调用f这个函数的时候,由于*args, **kwargs是表示可变参数的,
*args, **kwargs 意思是不知道会传入怎样的参数,调用的时候可以,可以只传位置参数,例如:f(7)
也可以只传关键字参数f(a=1), 也可以不传参数,直接f(), 也可以位置参数和关键字参数都传,并且数量随意,如下:
def f(*args, **kwargs):
print('args',args)
print('kwargs',kwargs)
f(7)
f(a=1)
f()
f(1,2,3,4,a=5,b=6,c=7)
输出分别是:
args (7,)
kwargs {}
args ()
kwargs {'a': 1}
args ()
kwargs {}
args (1, 2, 3, 4)
kwargs {'a': 5, 'b': 6, 'c': 7}
同时args和kargs也可以叫其他名字,比如改成c和d
def f(*c, **d):
print('c',c)
print('d',d)
f(7,8,9, a=1, b=2)
输出:
c (7, 8, 9)
d {'a': 1, 'b': 2}
加个默认参数
def f(x, *args, **kargs):
print('x', x)
print('args',args)
print('kargs',kargs)
f(7, 8, 9 , a=1, b=2)
输出:
x 7
args (8, 9)
kargs {'a': 1, 'b': 2}