python函数*args和**kwargs

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}

你可能感兴趣的:(python,开发语言)