
当函数的参数(个数)不确定时,可以使用*args和**kwargs,*args表示参数没有key值,也就是无名参数,是一个tuple,**表示参数有key值,也就是关键字参数,是一个dict。
代码示例:
1 2 3 4 5 6 7 8 9 10 11
|
def foo(*args, **kwargs): print('args = ', args) print('kwargs = ', kwargs) print('---------------------------------------') if __name__ == '__main__': foo(1, 2, 3, 4) foo(a=1, b=2, c=3) foo(1, 2, 3, 4, a=1, b=2, c=3) foo('a', 1, None, a=1, b='2', c=3)
|
输出结果为:
1 2 3 4 5 6 7 8 9 10 11 12
|
args = (1, 2, 3, 4) kwargs = {} --------------------------------------- args = () kwargs = {'c': 3, 'a': 1, 'b': 2} --------------------------------------- args = (1, 2, 3, 4) kwargs = {'c': 3, 'a': 1, 'b': 2} --------------------------------------- args = ('a', 1, None) kwargs = {'c': 3, 'a': 1, 'b': '2'} ---------------------------------------
|
需要特别提出注意的一点是,在同时使用*args和**kwargs时,*args参数必须要在**kwargs前,像foo(a=1, b=’2’, c=3, a’, 1, None, )这样调用的话,会提示语法错误“SyntaxError: non-keyword arg after keyword arg”。
近期评论