簡介:
在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}