本文轉載自https://www.cnblogs.com/xuyuanyuan123/p/6674645.html
多個實參,放到一個元組裏面,以*開頭,可以傳多個參數;**是形參中按照關鍵字傳值把多餘的傳值以字典的方式呈現
*args:(表示的就是將實參中按照位置傳值,多出來的值都給args,且以元祖的方式呈現)
示例:
def
foo(x,
*
args):
print
(x)
print
(args)
foo(
1
,
2
,
3
,
4
,
5
)
#其中的2,3,4,5都給了args
執行結果是:
1 2 |
|
當args與位置參數和默認參數混用的情況下:(注意三者的順序)
示例一、(三者順序是:位置參數、默認參數、*args)
1 2 3 4 5 6 |
|
執行結果是:
1 2 3 |
|
示例二、(三者順序是:位置參數、*args、默認參數)
1 2 3 4 5 6 |
|
執行結果是:
1 2 3 |
|
其中關於*,可以從2個角度來看(需要拆分來看):
1、從形參的角度來看:
示例:
1 2 3 |
|
執行結果是:
1 |
|
2、從實參的角度來看:
示例:
1 2 3 4 5 6 |
|
執行結果是:
1 2 3 |
|
——————————————————————————————————————————————————————————————————————————————————————
**kwargs:(表示的就是形參中按照關鍵字傳值把多餘的傳值以字典的方式呈現)
示例:
1 2 3 4 |
|
執行結果是:
1 2 |
|
關於**kwargs與位置參數、*args、默認參數混着用的問題:(注意順序)
位置參數、*args、**kwargs三者的順序必須是位置參數、*args、**kwargs,不然就會報錯:
示例:
1 2 3 4 5 |
|
執行結果是:
1 2 3 |
|
錯誤示例:(由於順序錯誤)
1 2 3 4 5 |
|
執行結果就會報錯:
1 |
|
位置參數、默認參數、**kwargs三者的順序必須是位置參數、默認參數、**kwargs,不然就會報錯:
示例:
1 2 3 4 5 |
|
執行結果是:
1 2 3 |
|
其中關於**,可以從2個角度來看(需要拆分來看):
1、從形參的角度來看:
示例:
1 2 3 |
|
執行結果是:
1 |
|
2、從實參的角度來看:
示例一:
1 2 3 4 5 6 |
|
執行結果是:
1 2 3 4 |
|
示例二:
1 2 3 4 5 6 |
|
執行結果是:
1 2 3 4 |
|