参数组合

在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

比如定义一个函数,包含上述若干种参数:

def f1(a, b, c=0, *args, **kw):
print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw) def f2(a, b, c=0, *, d, **kw):
print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)

在函数调用的时候,Python解释器自动按照参数位置和参数名把对应的参数传进去。

>>> f1(1, 2)
a = 1 b = 2 c = 0 args = () kw = {}
>>> f1(1, 2, c=3)
a = 1 b = 2 c = 3 args = () kw = {}
>>> f1(1, 2, 3, 'a', 'b')
a = 1 b = 2 c = 3 args = ('a', 'b') kw = {}
>>> f1(1, 2, 3, 'a', 'b', x=99)
a = 1 b = 2 c = 3 args = ('a', 'b') kw = {'x': 99}
>>> f2(1, 2, d=99, ext=None)
a = 1 b = 2 c = 0 d = 99 kw = {'ext': None}

最神奇的是通过一个tuple和dict,你也可以调用上述函数:

>>> args = (1, 2, 3, 4)
>>> kw = {'d': 99, 'x': '#'}
>>> f1(*args, **kw)
a = 1 b = 2 c = 3 args = (4,) kw = {'d': 99, 'x': '#'}
>>> args = (1, 2, 3)
>>> kw = {'d': 88, 'x': '#'}
>>> f2(*args, **kw)
a = 1 b = 2 c = 3 d = 88 kw = {'x': '#'}

所以,对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的。

最新文章

  1. Elasticsearch 5.0 —— Head插件部署指南
  2. How To Restart timer service on all servers in farm
  3. 关于onbeforeunload的一些想法
  4. Bitcask 存储模型
  5. PHPCMS 模板制作标签
  6. wp8.1 Study19:通知
  7. Unity5版本的AssetBundle打包方案之打包Scene场景
  8. Spring AOP术语
  9. MVC 简单发送邮件示例
  10. ASP.NET基础系列
  11. CGLIB学习笔记
  12. dom操作js
  13. Vue源码终笔-VNode更新与diff算法初探
  14. link-cut-tree 简单介绍
  15. 记录一个pom文件
  16. docker系统学习之docker界面管理
  17. tabindex 带有指定 tab 键顺序 或焦点 focus
  18. 微信小程序制作家庭记账本之二
  19. 亚像素Sub Pixel
  20. 在vs2012下编译出现Msvcp120d.dll 丢失的问题

热门文章

  1. Java内存浅析分类
  2. 如何保护.net中的dll文件(防破解、反编译)
  3. Linux下的shell编程(三)BY 四喜三顺
  4. ORA-04021:timeout occurred while waiting to lock object
  5. 如何为datagridview加上序号
  6. MyBatis的应用
  7. jenkins:通过execute shell启动的进程会被杀死的问题
  8. MySQL 第七天(核心优化一)
  9. 常见HTTP状态码(200、301、302、500等)
  10. 时间序列分析之ARIMA模型预测__R篇