首先,我们来看一个函数定义:

def f(a,*b,**c):print(f'a:{a},b:{b},c:{c}')

*b与**c都是可变参数

  • 出现带一个星号的参数 b,这是可变位置参数
  • 带两个星号的参数 c,这是可变关键字参数

现在执行如下代码:

In [2]: f(1,2,3,w=4,h=5)
a:1,b:(2, 3),c:{'w': 4, 'h': 5}

可以看到,参数 b 被传递 2 个值,参数 c 也被传递 2 个值。可变位置参数 b 被解析为元组,可变关键字参数 c 被解析为字典

下面有几个重要规则:

(1)可变位置参数不能传入关键字参数

In [41]: def f(*a):...:   print(a)
In [42]: f(1)
(1,)
In [43]: f(1,2,3)
(1, 2, 3)
In [44]: f(a=1)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-44-6a0ab2c303a9> in <module>
----> 1 f(a=1)
TypeError: f() got an unexpected keyword argument 'a'

(2) 可变关键字参数不能传入位置参数

In [45]: def f(**a):...:   print(a)
In [46]: f(a=1)
{'a': 1}
In [47]: f(a=1,b=2,width=3)
{'a': 1, 'b': 2, 'width': 3}
In [48]: f(1)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-48-281ab0a37d7d> in <module>
----> 1 f(1)
TypeError: f() takes 0 positional arguments but 1 was given

Python函数参数之*与**用法详解相关推荐

  1. python 函数参数self_python self用法详解

    对于在类体中定义的实例方法,Python 会自动绑定方法的第一个参数(通常建议将该参数命名为 self),第一个参数总是指向调用该方法的对象.根据第一个参数出现位置的不同,第一个参数所绑定的对象略有区 ...

  2. python字符串strip的作用_Python字符串函数strip()原理及用法详解

    Python字符串函数strip()原理及用法详解 strip:用于移除字符串头尾指定的字符(默认为空格)或字符序列.注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符. 语法:str.s ...

  3. python控制画笔尺寸,Python画笔的属性及用法详解

    画笔有颜色.画线的宽度等属性. 1.turtle.pensize():设置画笔的宽度: 2.turtle.pencolor():没有参数传入返回当前画笔颜色:传入参数设置画笔颜色,可以是字符串如&qu ...

  4. python读取json格式文件大量数据,以及python字典和列表嵌套用法详解

    1.Python读取JSON报错:JSONDecodeError:Extra data:line 2 column 1 错误原因: JSON数据中数据存在多行,在读取数据时,不能够单单用open(), ...

  5. Python for i in range ()用法详解

    for i in range ()作用: range()是一个函数, for i in range () 就是给i赋值: 比如 for i in range (1,3): 就是把1,2依次赋值给i r ...

  6. Python中数组切片的用法详解

    Python中数组切片的用法详解 一.python中"::-1"代表什么? 二.python中":"的用法 三.python中数组切片 三.numpy中的整数数 ...

  7. 站长在线Python精讲:在Python函数中参数传递的位置参数详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python函数中参数传递的位置参数详解>.本文的主要内容有:实参和形参数量必须与定义时一致和实参和形参位置必须与定义时一 ...

  8. matlab中采样函数,matlab采样相关函数用法详解

    matlab采样函数(降采样,过采样,减采样函数)用法详解 dyaddown 功能:对时间序列进行二元采样,每隔一个元素提取一个元素,得到一个降采样时间序列. 格式: 1.y = dyaddown(x ...

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

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

最新文章

  1. VIM7.3添加中文帮助文档
  2. 解析XML时,需要校验节点是否闭合,如必须有与之对应,用()数据结构实现比较好?
  3. 如何将文件复制到虚拟机中
  4. spring Boot Actuator使用
  5. python爬虫之urllib库详解
  6. 赛锐信息-AMS系列产品简介
  7. 3.15 送货通知单
  8. linux忘记开机密码解决方案
  9. 【Java并发性和多线程】竞态条件与临界区
  10. soapui 测试webservice
  11. 《数据挖掘概念与技术》第二版 中文版 第二章答案
  12. 系统默认声卡驱动没有均衡器的解决方法
  13. mc正版服务器 创世神插件,我的世界创世神插件WorldEdit怎么安装
  14. 智能快递柜在小区的应用
  15. SynthWave '84 - VS Code theme小白安装教程
  16. 3原色对照表.....
  17. 编写有效的测试用例及如何进行用例评审
  18. 写的一个棋盘格生成小程序,很简单,但是很实用,对于经常使用棋盘格的人来说很实用
  19. execute immediate在存储过程中的使用
  20. 加入控制变量后结果悲催了!

热门文章

  1. 独热码状态机、SR锁存器延迟模型、移位除法器模型
  2. Windows PowerShell 中启动 Nginx 报错解决方案
  3. 电脑投屏到电视android,电脑怎么投屏到电视?看完这篇文章你就懂了
  4. CA双向认证完整实现步骤(附java客户端代码)
  5. 2020 DASCTFBJD 部分题解
  6. Js中前台调后台接口无法调转的问题
  7. 大连的房价很便宜了!
  8. 如何选择适合你的兴趣爱好(四十八),手风琴
  9. 关于计算机的趣味小知识,10个非常有意思的趣味知识和科学事实
  10. 谁的青春不迷茫-纪2020