①引言python
在Python中,星號除了用於乘法數值運算和冪運算外,還有一種特殊的用法是在變量前加單個星號或兩個星號,實現多參數的傳人或變量的拆解。函數
②什麼是星號變量spa
最初,星號變量是用在函數的參數傳遞上的,在下面的實例中,單個星號表明這個位置接受任意多個非關鍵字參數,在函數的*b位置上將其轉化成元組,code
def one(a,*b): """a是一個普通傳入參數,*b是一個非關鍵字星號參數""" print(b) one(1,2,3,4,5,6)
out:(2,3,4,5,6)blog
③雙星號表明這個位置接收任意多個關鍵字參數,在**b位置上將其轉化成字典:class
def two(a=1,**b): """a是一個普通關鍵字參數,**b是一個關鍵字雙星號參數""" print(b) two(a=1,b=2,c=3,d=4,e=5,f=6)
out:two(a
=
1
,b
=
2
,c
=
3
,d
=
4
,e
=
5
,f
=
6
)
變量
④擴展用法單星號變量實例擴展
單星號變量不單單可以用在函數的參數傳遞中,實際上對一個普通變量使用單星號前綴,可以將這個變量拆分紅單個元素,請看下面的實例方法
若是在變量前面使用單星號,其實是對變量的一次拆解操做,將變量中單獨的元素拆解出來,
im函數會將這些傳入的單個元素保存成一個元組,這就是爲何咱們
print(x[0])
可以提取第一個元素的緣由.
列表是能夠更改的,將列表拆分後傳入函數,嘗試在函數內部更改第一個元素的值,結果觸發了「TypeError」異常,不論傳入的參數的原始類型是什麼,four(*x)函數在*x的位置接受這些傳入的參數後,都會將其保存成」元組」,而元組是不能改變的。
若是傳入了一個字典元素,發現僅輸出了字典元素的鍵,並無包含值,實際上,單星號是沒法讀取到字典中的值的,永遠只會讀取到字典中的鍵,若是想讀取到字典中的值,須要使用雙星號
⑤擴展用法雙星號變量實例
咱們使用單星號拆分了一個字典傳遞給函數,卻只能獲得字典的鍵,下面演示如何使用雙星號來得到字典的值:
綠色 1)這裏保存成元組
Ps:注意,使用這種方法將字典傳入函數的時候,字典的鍵的命名要符合python變量的命名規則,經過上面的分析也不難看出,雙星號會將字典首先轉換成關鍵字參數的形式,就至關於將字典中的鍵做爲變量命,若是鍵不符合變量命名規則,會拋出一個"TypeError"異常,你們能夠嘗試着顛倒一下上面字典中的鍵和值,使用數字做爲鍵,看看會出現什麼問題。
⑥在一個函數的接收參數中,同時出現"非關鍵字參數(位置參數)"和"關鍵字參數"時,可使用一個單星號來分隔這兩種參數
⑦要在一個函數中包含多種參數的組合,必須遵照這樣的順序:位置參數(必選參數),默認參數,單星號參數或星號分隔符,關鍵字參數,雙星號參數;
請看下面的實例