*args 表示任意个普通参数,调用的时候自动组装为一个tuple

**kwags 表示任意个字典类型参数, 调用的时候自动组装成一个dict

args和kwags是两个约定俗成的用法。

变长参数可以用*args来解包

>>> args = [3,6]
>>> list(range(*args))
[3, 4, 5]

>>> def f1(*args, **kwargs):
...    print args, kwargs
...
>>> l = [1, 2, 3]
>>> t = [4, 5, 6]
>>> d = {'a':7, 'b':8, 'c':9}

>>> f1()
() {}

>>> f1(1,2,3)
(1, 2, 3) {}

>>> f1(1,2,3,'hello')
(1, 2, 3, 'hello') {}

>>> f1(a=1,b=2,c=3)
() {'a': 1, 'c': 3, 'b': 2}

>>> f1(a=1,b=2,c=3,d='hello')
() {'a': 1, 'c': 3, 'b': 2, 'd': 'hello'}

>>> f1(1,2,3,a=1,b=2,c=3)
(1, 2, 3) {'a': 1, 'c': 3, 'b': 2}

>>> f1(*l)
(1, 2, 3) {}
>>> f1(*t)
(4, 5, 6) {}
>>> f1(**d)
() {'a': 7, 'c': 9, 'b': 8}

>>> f1(1,2,*t)
(1, 2, 4, 5, 6) {}
>>> f1(1,2,*l)
(1, 2, 1, 2, 3) {}

>>> f1(1,2,*t,s='world',**d)
(1, 2, 4, 5, 6) {'a': 7, 'c': 9, 'b': 8, 's': 'world'}

>>> def f2(arg1, arg2, *args, **kwargs):
...     print arg1, arg2, args, kwargs
...
>>> f2(1,2,3,a=1,b=2,c=3)
1 2 (3,) {'a': 1, 'c': 3, 'b': 2}
>>> f2(1,2,*t)
1 2 (4, 5, 6) {}
>>> f2(1,2,*t,s='hello',**d)
1 2 (4, 5, 6) {'a': 7, 'c': 9, 'b': 8, 's': 'hello'}

最新文章

  1. Fedora 22中的DNF软件包管理工具
  2. Mysql在windows系统下的配置
  3. 两个APP之间怎么调用《IT蓝豹》
  4. Web API应用支持HTTPS的经验总结
  5. 给锁住的行解锁(oracle)
  6. win32程序组成
  7. JS闭包文章--(翻译)Callbacks in Loops
  8. VS2013的virtualpath在当前应用程序根的外部
  9. package-info.java文件详解
  10. 【自动化测试】Selenium excel操作
  11. Xamarin Mono Android Ios 安装、破解(4.12)
  12. HDU5715 XOR 游戏 二分+字典树+dp
  13. 文件/图片,批量上传【神器】--WebUploader
  14. 高性能javascript
  15. eCos驱动分析 之 ISR是如何与硬件中断联系起来的?
  16. Android网络开发之用tcpdump抓包
  17. GitBook配置
  18. Linux:从入门到放弃
  19. 一款优秀的前端框架——AngularJS
  20. 【视频】dx dy的意思 微分的定义 导数符号的意思

热门文章

  1. Ruby之Rspec的报错解决
  2. HTTP基础(整理)
  3. Java 加解密技术系列之 DES
  4. linux安装svn客户端subversion及使用方法
  5. 关于cocos2d-x 和安卓之间的相互调用
  6. Spring配置错误记录
  7. 资源重复 uac.res resource kept(转)
  8. android 自定义控件View在Activity中使用findByViewId得到结果为null
  9. onvif 开发之video streamer---onvif实现功能和经验
  10. 查询SQL2008字段和注释