简介:
在Python中,星号除了用于乘法数值运算和幂运算外,还有一种特殊的用法"在变量前添加单个星号或两个星号",实现多参数的传入或变量的拆解
1.参数传递
可变参数是用在函数的参数传递上的
单个星号代表这个位置接收任意多个非关键字参数并将其转化成元组
而双星号代表这个位置接收任意多个关键字参数并将其转化成字典
*args的功能:------接收N个位置参数,转换成元组tuple形式 **kwargs的功能------接收N个关键字参数,转换成字典dict形式
1.1单个星号
1 def test(a,*args): 2 """a是一个普通传入的参数 3 :args是一个非关键字星号参数 4 """ 5 print('*args:{0}'.format(args)) 6 a=[1,2,3] 7 test(4,*a)
结果:

1 *args:(1, 2, 3)
1.2双星号
def test(a,**kwargs): """a是一个普通传入的参数 :args是一个关键字星号参数 """ print('*kwargs:{0}'.format(kwargs)) b={'name':'ganin','age':18} test(1,**b)
运行结果
*kwargs:{'name': 'ganin', 'age': 18}
2.变量拆分
2.1*的变量拆分

def test(*args): """ :args是一个非关键字星号参数 """ print(args[1]) a=[1,2,3] #test(a)#IndexError: tuple index out of range报错,没有使用*的直接把所有的转为元组 test(*a)#2能够将这个变量拆分成单个元素 注意:*是无法拆分字典的 b={'name':'ganin','age':18} test(*b) #age
2.2**的变量拆分
def test(**kwargs): """ :kwargs """ print(kwargs) b={'name':'ganin','age':18} test(**b) #{'name': 'ganin', 'age': 18}