在Python中,星号除了用于乘法数值运算和幂运算外,还有一种特殊的用法 “在变量前添加单个星号或两个星号”,实现多参数的传入或变量的拆解。
*
该位置接受任意多个非关键字(non-keyword)参数,在函数中将其转化为元组(1,2,3,4)
**
该位置接受任意多个关键字(keyword)参数,在函数 **
位置上转化为字典 [key:value, key:value]
单星号变量
注意:单星号是无法读取到字典中的值的,只会读取到字典中的键(key),如果想读取到字典中的值,需要使用双星号(**
)
1 | def one(*x): |
双星号变量
双星号会将字典首先转换成关键字参数的形式,相当于使用字典中的键作为变量名,如果键不符合变量命名规则,则会抛出一个 TypeError
异常。
1 | def one(**x): |
星号在非关键字参数(位置参数)和关键字参数的作用
同时出现”非关键字参数(位置参数)”和”关键字参数”时,使用一个单星号来分隔这两种参数。
1 | def mix(a,b,*,x,y): |
函数中包含多种参数的组合,必须遵守这样的顺序:位置参数(必选参数),默认参数,单星号参数或星号分隔符,关键字参数,双星号参数。
1 | def mix(a,b=0,*c,x,**y): |
参考: