美文网首页
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