对于习惯使用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