先来看个例子:

  

#! /usr/bin/env python
#coding=utf-8def 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)

结果:

args= (1, 2, 3, 4)
kwargs= {}
--------------------------------------
args= ()
kwargs= {'b': 2, 'c': 3, 'a': 1}
--------------------------------------
args= (1, 2, 3, 4)
kwargs= {'b': 2, 'c': 3, 'a': 1}
--------------------------------------
args= ('a', 1, None)
kwargs= {'b': '2', 'c': 3, 'a': 1}
--------------------------------------

可以看到,这两个是python中的可变参数。*args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个dict。并且同时使用*args和**kwargs时,必须*args参数列要在**kwargs前,像foo(a=1, b='2', c=3, a', 1, None, )这样调用的话,会提示语法错误“SyntaxError: non-keyword arg after keyword arg”。

还有一个很漂亮的用法,就是创建字典:

def kw_dict(**kwargs):
  return kwargs

print(kw_dict(a=1,b=2,c=3) == {'a':1,'b':2,'c':3})

其实python中就带有dict类,使用dict(a=1,b=2,c=3)即可创建一个字典了。

转载于:https://www.cnblogs.com/R-bear/p/7743102.html

python--*args和**kwargs可变参数相关推荐

  1. python中什么是可变参数_详解Python的三种可变参数

    详解Python的三种可变参数 可变参数 可变参数应该最简单,在C/C++和Java等语言中都有,就是用*号来表示,例如 def testArg(*arg) 你可以传入任意多个元素(包括0)到参数中, ...

  2. python可变参数的实验性_详解Python的三种可变参数

    可变参数 可变参数应该最简单,在C/C++和Java等语言中都有,就是用*号来表示,例如 def testArg(*arg) 你可以传入任意多个元素(包括0)到参数中,在函数内部会自动认为是一个元组或 ...

  3. python什么是可变参数_详解Python的三种可变参数

    可变参数 可变参数应该最简单,在C/C++和Java等语言中都有,就是用*号来表示,例如 def testArg(*arg) 你可以传入任意多个元素(包括0)到参数中,在函数内部会自动认为是一个元组或 ...

  4. Python的三种可变参数

    初学python没多久,对python中函数的可变参数有点头晕,查阅了stackflow,现总结一下 可变参数 可变参数应该最简单,在C/C++和Java等语言中都有,就是用*号来表示,例如 def ...

  5. python args函数_Python函数参数*args 和**kwargs的用法

    args就是所有参数的数组,kwargs就是当你传入key=value是存储的字典,当函数的参数不确定时,可以使用*args 和kwargs,*args 没有key值,kwargs有key值 def ...

  6. python args函数_Python函数参数*args和**kwargs

    #!/usr/bin/env python3#coding: utf-8#File: args_kwargs_demo.py#Author: lxw#Date: 10/9/17 11:16 AM &q ...

  7. python *args用法_python函数参数*args**kwargs用法实例

    #coding=utf8 __author__ = 'Administrator' # 当函数的参数不确定时,可以使用*args和**kwargs.*args没有key值,**kwargs有key值 ...

  8. python中函数的可变参数_Python中函数的参数定义和可变参数

    转自:http://www.cnblogs.com/tqsummer/archive/2011/01/25/1944416.html 刚学用Python的时候,特别是看一些库的源码时,经常会看到fun ...

  9. python * args和** kwargs的用法

    所属网站分类: python基础 > 函数 作者:慧雅 链接: http://www.pythonheidong.com/blog/article/18/ 来源:python黑洞网 www.py ...

最新文章

  1. jquery getJSON 中对超时Timeout的处理
  2. vue token 过期处理
  3. android 加载更多,如何在android中实现加载更多的recyclerview
  4. UImenuController
  5. python连接redis sentinel集群
  6. Apache ab 压力测试工具
  7. OAuth 授权timestamp refused问题
  8. Linux操作系统:文件和目录命令
  9. Spring Aware接口注入
  10. 顺序查找(Linear Search)
  11. P3371 单源最短路径【模板】 洛谷
  12. 你做不到对企业真正有价值,下一个裁员就是你
  13. 笨方法学python 习题42
  14. 人工智能中常用的词汇
  15. QQ空间相册批量下载【原图】
  16. mysql非常规的中文乱码问题
  17. ORACLE读取XML
  18. 华为服务器用户名密码忘记,电脑坏了,腾讯云华为云忘记宝塔面板登陆名和密码怎么办?...
  19. Win10+NVIDIA TITAN Xp | RTX 2060+Python3.6+TensorFlow_gpu2.1.0+keras2.3.1+cuda10.1+cudnn7.6.5.32记录
  20. Vue中显示echarts北京公交路线

热门文章

  1. python多继承_python作用域和多继承
  2. 天池 在线编程 部门统计(哈希)
  3. 流式计算的代表:Storm、Flink、Spark Streaming
  4. LeetCode MySQL 570. 至少有5名直接下属的经理
  5. 程序员面试金典 - 面试题 05.02. 二进制数转字符串(浮点型 转 二进制小数,乘2取整)
  6. LeetCode 1103. 分糖果 II
  7. POJ 3122 分披萨(二分查找)
  8. Flask基础知识总结
  9. python 控件叠加_如何将图像应用于控件背景(叠加)
  10. python各种岗位薪资_python编程语言岗位薪资真不是盖的