對於習慣使用java/C#等編程語言的人,通常調用函數的時候就是例如 test(int x,int y ,int z),調用就是test(1,2,3)。但是對於Python來說函數調用就非常靈活
一:不定量參數傳遞
def print_params(*params):
print(params)
這里params是一個數組結構,調用的時候依據實際參數長度生成一個數組參數
二:混合參數傳遞
def print_params_2(title, *params):
print(title)
print(params)
調用:print_params_2('Params:', 1, 2, 3)
返回結果
Params:
(1, 2, 3)
這種方式的參數,參數定義的會優先取傳入數據,當沒有定義的參數承接數據時,剩下的數據會被傳遞到不定量參數里
同樣情況另一種寫法
def in_the_middle(x, *y, z):
print(x, y, z)
這種寫法,即是y就是取中間參數,最少需要三個參數,x,z首尾取一個,剩下的全部賦值給y
def print_params_3(**params):
print(params)
當我們使用兩個星號時,表示我們的參數是key-value字典集參數
所以終極混合:
def print_params_4(x, y, z=3, *pospar, **keypair):
print(x, y, z)
print(pospar)
print(keypair)
前面匹配三個參數,pospar數組匹配中間參數,尾部key-value形式的參數全部交給keypair