不定长参数定义:也叫可变参数,用于不确定调用的时候会传递多少个参数(不传参也可以)的场景
不定长参数作用:当调用函数不确定参数个数时,可以使用不定长参数
不定长指的是参数的数量,数量可以是任意的
不定长参数的类型:
1.位置传递 (标志性符号为:* ,格式*不定长参数/形参)
2.关键字传递(标志性符号为:**,格式**不定长参数/形参)
def a(*b) 带上*,表明形参b它所接收的数量是无限的(数量可为单个也可以为多个),当我们使用不定长传递的时候,b这个形式参数,就会默认标记为元组类型,当传递不定长参数(传实参)的时候,通常都会存储到元组内部(这一部分为原理,解释作用),所以我们可以以元组的形式去调用,所以b也可以叫做元组。
b的实参可以为0个,也可以为无限个。
带个*,b形式参数,b的实参为单个时,调用函数的时候,就显示一个值;b的实参为多个时,调用函数的时候,就展示多个值,形参b的类型就是以元组的形式存储了
def a(*d):
print(d)
a(1,2,3)
1,2,3
通过*得到的不定长,那么这种不定长我们叫做位置传递
def a(**b)
通过**得到的不定长,这种叫关键字传递,它的实参不受限制,可以一个也可以多个,同时也必须满足key=值的这种键值对的形式,传实参的时候,按照要求:key=value这种方式传递(调用函数,实参按照这种方式写代码)。比如实参b("你好"=11),传入的时候(调用函数),(形参b的类型)就形成字典了。
def a(**d):
print(d)
a(c="你好",e="我们")
{c="你好",e="我们"}
还有一种方式,通过字典的方式去定义:
def a(**d):
e={"你好"=22,"我们"=11}
a(**e) #如果是以"e"字典的形式,那么调用的时候需要加上(**e),带上**,说明是解包的意思,这个是语法规则,也可以这么理解
{"你好"=22,"我们"=11}
12.19 二