7.fun(*args,**kwargs)中的*args,**kwargs什么意思?

每天至少打卡一道python面试题。以尽量多的方式解锁题目,如果有遗漏的方法,欢迎在评论区补充。希望大家一起提高!

*args表示可变参数,即参数个数不固定,在函数中接收到的args是一个元组。

我们通过下面两个示例来了解args的用法。

  1. args会将传入参数转换为元组
  2. 使用args可以接收任意长度的参数
  3. 当args前面还有其他参数时,在传参时优先按照位置填充,前面参数填充完后,多余的参数全部由args接收
def func_args_01(*args):
    print('args type is: %s' % type(args))
    print(f'args value: {args}')


def func_args_02(a, b, *args):
    print('args type is: %s' % type(args))
    print(a, b, args)


if __name__ == '__main__':
    func_args_01(1, 2, 3)
    # args type is: <class 'tuple'>
    # args value: (1, 2, 3)
    
    func_args_01()
    # args type is: <class 'tuple'>
    # args value: ()
    
    func_args_02(1, 2, 3, 4)
    # args type is: <class 'tuple'>
    # args value: 1 2 (3, 4)

**kwargs表示关键字参数,在调用时,必须使用key=value的形式传入,在函数中接收到的kwargs是一个字典

另外,需要注意的是:参数arg、*args、**kwargs三个参数的位置必须是一定的,必须是(arg,args,*kwargs)这个顺序,否则会报错。

arg叫做位置参数

*args叫可变参数

**kwargs叫关键字参数

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容