一個函數,至多可以帶一個一星參數(收集位置參數),加上一個二星參數(收集關鍵字參數)。
01 一個星號參數
- 入參為不定參數(參數個數不確定),此時在定義參數時,在參數名稱前加上*號(表示一個元組)
- 帶星號的參數可位于參數列表的任意位置,python要求函數只能有一個帶星號的參數
def my_sum(*t):print(t, type(t))sum = 0for s in t:sum += sreturn sum# 事實上該函數接受了不定個數的輸入參數
my_sum(1, 2, 3, 4, 2233)
- 如果帶星號的參數后面還有其它參數,則他們必須以關鍵字的形式傳參,否則Python無法分辨實參到底傳給誰
def pow_sum(*t, p):# 帶星號的輸入參數被當作元組處理print(t, type(t))sum = 0for s in t:sum += s ** preturn sum# 最后一個參數p,需要指定關鍵字傳遞
pow_sum(1, 2, 3, 4, 2233, p=2)
- 如果帶星號的參數前面有其它參數,則不必根據關鍵字傳遞實參
def sum_test(x1, x2, *y):sum = 0for i in y:sum = sum + ireturn sum + x1 + x2a = sum_test(1, 2, 3)
b = sum_test(1, 2, 3, 22, 44, 55)
c = sum_test(1, 2, 3, 4, 5, 6)
print(a, b, c)
02 兩個星號參數
- 二星參數在函數內部以【字典】的形式存在。 – 【Python獨有】
- 二星參數【必須在參數列表的末尾】,它后面不能再有別的關鍵字參數和位置參數
def bar(param1, **param2):print(param1)print(param2)bar(1, a=2, b=3) # 結果:
1
{'a': 2, 'b': 3}