形参的分类形参的分类可以分为六种:
带有默认值的位置形参不带默认值的位置形参带有默认值的关键字形参不带默认值的关键字形参可变长度的位置形参可变长度的关键字形参实例:
def fn(a,b,c=10,*,d,e=20,**kwargs)1、带及不带默认值的位置形参实例中,在 * 号之前统称为位置形参,位置形参可以由位置实参及关键字实参进行传值。
不带默认值的位置形参:不带有默认值的位置形参必须要实参进行传值,如果实参不传值就会报错
带有默认值的位置形参:带有默认值的关键字位置实参可以用实参进行传值,也可以不使用实参进行传值,不使用实参进行传值时,使用默认值作为其值
2、带有及不带默认值的关键字形参实例中 * 以后的参数都是关键字形参,在使用关键字形参时,必须使用关键字实参进行传值,不使用会报错
不带默认值的关键字形参:不带有默认值的关键字形参必须使用关键字实参进行传值,如果不传参数就会报错
带有默认值的关键字形参:带有默认值的关键字形参可以用关键字实参进行传值,也可以不传值,不传值时使用默认值作为其值。
3、可变长度的形参:可变长度位置形参:
其位置在位置形参及关键字形参之间,当传入的位置实参数量多于位置形参时,多出部分的位置形参会全部存储在可变长度的位置形参中可变长度的关键字形参就是例子中的 * ,只是给这个形参添加了一个名字,这个名字可以自定义,但是约定俗成的命名为 *args可变长度的关键字形参:
可变长度的关键字形参位于参数列表的末尾,当传入的关键字实参多与关键字形参时,多出的部分就会被储存在可变长度的关键字形参中,以元组进行存储可变长度的关键字形参使用 ** 进行表示,此时也需要给关键字形参添加一个名字,这个名字可以自定义,但是约定俗成的称为 **kwargs,以字典进行存储形参声明时,其声明顺序是有规定的,顺序为:
无默认值位置形参 --> 有关键字位置形参 --> 可变长度的位置形参 --> 无默认值的关键字形参 --> 有默认值的关键字形参 --> 可变长度的关键字形参
常用的参数列表类型:
-- (*args,**kwargs)-- (a,*args)-- (a,b=10,**kwargs) -- (a,*,b,**kwargs)-- (a,*args,b,**kwargs)在使用形参时要按照位置进行传参,即使是有关键字也要尽量按照位置进行传参,这样更加清晰
打散机制在使用可变长形参时,当传入的值多余需要的值时会把多余的参数放进可变长位置形参 及 可变长关键字形参,但是如果直接传入一个元组及字典中如何直接将其变为元组及字典呢?
此时需要使用 * 及 ** 的打散机制*单列容器 会打散单列容器
**双列容器 会打散双列容器
print(*(a,b,c)) --- > (a b c)print(**{a:1,b:2}) --- > {a:1,b:2}
苹果掀起可携式CE风潮 带动IC制造产业技术加速前进
小米卢伟冰:Note 10手机需要上百颗芯片,全球缺芯至少还有一年才能缓解
超声换能器电参数测试要点说明
中科院:已启动处理器芯片等“卡脖子”领域研究
变压器变比测试仪的作用意义
Python函数形参的分类
三星申请Dual LED商标,电视新品或将于CES 2020上正式亮相
脑洞大开!看看哪些物质能点亮LED灯
世强先进荣获Melexis2022优秀代理商“最佳设计奖”
无锁队列的潜在优势
任正非以不成功就跳楼 逼出一个芯片女皇
一条SQL如何被MySQL架构中的各个组件操作执行的?
传感器技术在防盗技术方面的应用
苹果13.2.2系统好不好
剖析STM32-定时器1
雙極電晶體模型及電路
中国物联网行业结构及发展趋势报告
石油化工行业的自动化控制系统有哪些
上海规划2025年新能源汽车比重将在35%以上
莱迪思推出支持速率高达10 Gbps嵌入式MIPI D-PHY接口的FPGA