可變長引數:指的是在呼叫函式時,傳入的引數個數可以不固定
呼叫函式時,傳值的方式無非兩種,一種是位置實參,另一種是關鍵字實參,因此形參也必須得有兩種解決方法,以此來分別接收溢位的位置實參(*)與關鍵字實參(**)
# 可變長引數*
# *args會接受多於的位置實參,盡量不使用其他的變數名,而應該使用args,args是約定俗稱
def func(name, pwd, *args):
print('name:', name, pwd, )
print(args)
return 1
res = func('randy', 123, 'a', 1, 3)
print(res)
結果:
('a', 1, 3)
1形參中的會將溢位的關鍵字實參全部接收,然後儲存字典的形式,然後把字典賦值給後的引數。需要注意的是:**後的引數名約定俗成為kwargs。
# 可變長引數 **
# kwargs會接收多餘的關鍵字實參,以字典形式儲存
def func(name, pwd, **kwargs):
print('name', name, 'pwd', pwd)
print(kwargs)
return 1
res = func('randu', 1234, a=2, b=4)
print(res)
結果:
1*會把元組打撒成位置實參傳給形參
def func(name, pwd, x, y, z):
print(name, pwd, x, y, z)
return 1
tup = (1, 2, 3)
print('randy', 12, *tup) # *會把元組打撒成位置實參傳給形參
結果:
randy 12 1 2 3
實參中的,會將後引數的值迴圈取出,打散成關鍵字實參。以後但凡碰到實參中帶的,它就是關鍵字實參,應該馬上打散成關鍵字實參去看。
def func(name, pwd, **kwargs):
print(name, pwd)
print(kwargs)
return 1
dic =
res = func('2', 3, **dic) # 會把字典打散成關鍵字實參傳給形參
結果:
2 3
可變長引數
由於在c語言中沒有函式過載,解決不定數目函式引數問題變得比較麻煩,即使採用c 如果引數個數不能確定,也很難採用函式過載。對這種情況,提出了指標引數來解決問題。如printf 函式,其原型為 int printf const char format,它除了有乙個引數format固定以外,後面跟的引數的...
可變長引數
可變長引數 指的是在呼叫函式時,傳入的引數個數可以不固定 呼叫函式時,傳值的方式無非兩種,一種是位置實參,另一種是關鍵字實參,因此形參也必須得有兩種解決方法,以此來分別接收溢位的位置實參 與關鍵字實參 形參中的會將溢位的位置實參全部接收,然後儲存元組的形式,然後把元組賦值給後的引數。需要注意的是 後...
可變長引數
可變長引數 public class demo06 double.numbers 為可變長引數,如果有多個引數,那麼可變長引數只能放在最後,否則會出錯 在指定引數型別後加乙個省略號 則此引數為可變引數 乙個方法中只能指定乙個可變引數,它必須是方法的最後乙個引數,任何普通的引數必須在它之前宣告 pub...