Python面试题
函数中的 *args
和 **kwargs
是什么?
*args
和 **kwargs
是Python中的不定长参数,*args
是顺序参数,**kwargs
是命名参数。例如:
def foo(*args, **kwargs):
print("args: {}, kwargs: {}".format(args, kwargs))
如果这么调用 foo(1, 2, 3, 4, name="hello", default=None)
,那么 args
的值就是 (1, 2, 3, 4)
,而 kwargs
的值是一个dict,内容是 name="hello", default=None
。我们直接看例子:
In [1]: def foo(*args, **kwargs):
...: print("args: {}, kwargs: {}".format(args, kwargs))
...:
In [2]: foo(1, 2, 3, 4, name="hello", default=None)
args: (1, 2, 3, 4), kwargs: {'name': 'hello', 'default': None}