美文网首页
python之 *args 和 **kwargs

python之 *args 和 **kwargs

作者: bonnie_xing | 来源:发表于2019-07-26 17:12 被阅读0次

    一、demo

    1. 关于*args, **kwargs的调用示例

    def foo(first, *args, **kwargs):
        print('first=', first)
        print('args=', args)
        print('type(args)=', type(args))
        print('kwargs=', kwargs)
        print('type(kwargs)=', type(kwargs))
        print('--------------------')
    
    
    if __name__ == '__main__':
        foo(1,2,3,4)
        foo('first', a=1, b=2, c=3)
        foo(1,2,3,4, a=1, b='2', c=3)
        # foo(a=1, 1)
    

    2. 查看输出结果

    first= 1
    args= (2, 3, 4)
    type(args)= <class 'tuple'>
    kwargs= {}
    type(kwargs)= <class 'dict'>
    --------------------
    first= first
    args= ()
    type(args)= <class 'tuple'>
    kwargs= {'a': 1, 'b': 2, 'c': 3}
    type(kwargs)= <class 'dict'>
    --------------------
    first= 1
    args= (2, 3, 4)
    type(args)= <class 'tuple'>
    kwargs= {'a': 1, 'b': '2', 'c': 3}
    type(kwargs)= <class 'dict'>
    --------------------
    

    二、解释

    1.关于*args

    • 实际是一个tuple
    • 去除函数必填的调用参数外,将其他的参数做为args的值,类型为tuple
    • 可以包含任意多个

    2.关于**kwargs

    • 实际是一个dict
    • 必须包含函数的必填字段,将参数按keyword和value形式转化为dict

    3.参数顺序

    • 最前面是函数的必填字段
    • 接下来是*args参数
    • 最后是 **kwargs参数

    三、参考连接

    https://www.cnblogs.com/fengmk2/archive/2008/04/21/1163766.html
    http://kodango.com/variable-arguments-in-python

    相关文章

      网友评论

          本文标题:python之 *args 和 **kwargs

          本文链接:https://www.haomeiwen.com/subject/xepdrctx.html