python *和**的用法 param, kwparam
*的用法
*在python中有多种功能和用法,下面一一给大家介绍。
1、乘法
这里的乘法有两种
1.1数字的乘法
print(3*4)
得到结果12
1.2数据的乘法,表示数据的加倍的次数
注意,可以针对字符串(str),列表(list),元组(tuple)做乘法
对于字典(dict),集合(set)则不能使用乘法
print(‘a’*4)
得到aaaa字符串
print([1,2]*2)
得到[1,2,1,2]
2、接收多余的数据,转换成列表
注意,对于元组,集合,最终返回的结果都是列表
a,b,*c = [1,2,3,4,5]
print(c)
得到[3, 4, 5]
a,b,*c = (9,8,7,6,5)
print(c)
得到[7,6,5]
3、定义函数时,接收参数,并将所有参数放入一个元组中
参数可以是同一类型的数据
def test1(*parm):
print(parm)
test1(1,2,3)
得到(1, 2, 3)
参数也可以是不同类型的数据
def test2(*parm):
print(parm)
test2(1, [‘2’,3], {‘a’:777})
得到(1, [‘2’, 3], {‘a’: 777})
4、调用函数时,分配参数
注意,此时参数个数要对应好,两个形参,就要传入两个实参
def test3(x,y):
print(x)
print(y)
param = [1,2]
test3(*param)
得到
1
2
如果传入实参和形参个数不一样,则会报错
def test4(x,y):
print(x)
print(y)
param = [1,2,3]
test4(*param)
TypeError: test2() takes 2 positional arguments but 3 were given
**的用法
5、定义函数时,将传入的参数组装成字典
def test5(**param):
print(param)
test5(x=1,y=2)
得到{‘x’: 1, ‘y’: 2}
6、调用函数时,分配参数
它获取到的是对应key的value
def test6(x,y):
print(x)
print(y)
param = {‘x’: 1, ‘y’: 2}
test6(**param)
得到
1
2