def foo(*args, **kwargs):print 'args = ', argsprint 'kwargs = ', kwargsprint '---------------------------------------'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 =  {'a': 1, 'c': 3, 'b': 2} 
--------------------------------------- 
args =  (1, 2, 3, 4) 
kwargs =  {'a': 1, 'c': 3, 'b': 2} 
--------------------------------------- 
args =  ('a', 1, None) 
kwargs =  {'a': 1, 'c': 3, 'b': '2'} 
---------------------------------------

可以看到,这两个是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”。

呵呵,知道*args和**kwargs是什么了吧。还有一个很漂亮的用法,就是创建字典:

    def kw_dict(**kwargs):return kwargsprint 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/Inbreeze/p/8431819.html

Python : *args和**kwargs是什么东东呢?相关推荐

  1. python *args和**kwargs以及序列解包

    DAY 8. *args和**kwargs *args:多值元组,**kwargs多值字典,他们是python函数传参时两个特殊的参数,args和kwargs并不是强制的,但习惯使用这两个,如果在函数 ...

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

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

  3. Python - *args and **kwargs

    分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击人工智能教程 The syntax is the * and **. The names *args a ...

  4. python *args和**kwargs详解

    一.使用场景 在定义类或函数时,以下场景会用到*args和**kwargs,前者叫位置参数,后者叫关键字参数 不确定传入参数的数量或形式 不关心传入参数的数量或形式(此时该类或函数多作为一个中间件的角 ...

  5. python args和kwargs

    python 参数传递 参数顺序:位置参数->默认参数->可变参数->关键字参数 可变参数和关键字参数有打包和解包的功能,可变参数(*args)将未命名的参数打包成元组类型,(**k ...

  6. python 中*args 和 **kwargs的区别

    *args的用法 当你不确定你的函数里将要传递多少参数时你可以用*args.例如,它可以传递任意数量的参数: def print_everything(*args):for count, thing ...

  7. Python中*args和**kwargs的区别

    https://www.cnblogs.com/yunguoxiaoqiao/p/7626992.html (注:本文部分内容摘自互联网,由于作者水平有限,不足之处,还望留言指正.) 中秋的夜,微凉, ...

  8. Python中*args 和**kwargs的用法探讨

    当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值.不确定的意思可以是有,有几个,也可以是没有 *args可以当作可容纳多个变量组成的l ...

  9. Python中的*args和**kwargs是什么?该如何使用?

    2020-01-16 12:30:00 全文共2911字,预计学习时长9分钟 来源:Pexels 在编程中,函数就是生命! 作为使用Python的新手--无论是编程新手,还是熟悉另一语言的人--都需要 ...

最新文章

  1. netty加载html文件的原理,Netty+html聊天室入门
  2. Two Arrays and Sum of Functions
  3. qs.parse和qs.stringify
  4. SAP Fiori Elements 公开课第三单元学习笔记 - OData 和注解深入讲解
  5. CF56E Domino Principle 树状数组 + 简单dp
  6. IIS 部署asp.net Core程序注意事项
  7. r语言liftchart_R语言强大的绘图功能--附数据和代码
  8. Android 6.0 for X86
  9. 【BZOJ4378】[POI2015]Logistyka 树状数组
  10. python3安装scapy_centos 7 安装python3.7 和scapy
  11. 《数据库原理》— 数据库系统概论第五版习题解析
  12. 批判性思维_通过批判性反思评估可视化创作系统
  13. 扫描枪速度测试软件,条码扫描枪怎么测试
  14. html调色板快捷键,12款web前端最佳调色板工具
  15. docker安装php拓展
  16. 2019哪里可以进行高层次人才扶持政策申报?
  17. 第一篇:阿里数据中台之数据中台顶层设计
  18. #二维差分# [ssloj 1467] U
  19. java exchange 日历_如何通过EWS-API 获取所有会议室的日历信息
  20. 将android程序写入内存,android中将数据写入手机内存和sdcard中的文件

热门文章

  1. 使用SQL命令行更改数据库字段类型
  2. jquery获取div/div之间的内容.text() 和 .html()区别
  3. 分布式、集群的概念、区别
  4. 强大的PHP给图片加水印
  5. JNI_Android项目中调用.so动态库实现详解【转】
  6. python读取csv文件_python配置文件的读取
  7. (61)FPGA面试题-使用Verilog语言编写异步复位同步释放代码
  8. (10)FPGA专业术语(第2天)
  9. 使用Vivado保存ILA数据并读取
  10. (34)SystemVerilog语言编写计数器