Python中的*可变参数与**关键字参数 1
*可变参数
在Python中可以定义可变参数,顾名思义,可变参数就是传入参数是可变的。可以是任意个,以一个简单的数学编程为例,计算
sum = a * a + b * b + .....z * z
函数定义可以如下:
def getsum(num) :
sum = 0
for n in num :
sum = sum + n * n
return sum
但是调用的时候必须定义一个元组或者列表。比如getsum([1,2,3])
如果利用可变参数调用函数的方式可以变成这样的话就方便的多比如getsum(1,2,3)
可以这么修改
def getsum(*num) :
sum = 0
for n in num :
sum = sum + n * n
return sum
如果已经有一个list或者tuple,要调用一个可变参数怎么办?可以这样做:
>>> nums = [1, 2, 3]
>>> calc(nums[0], nums[1], nums[2])
14
这种写法当然是可行的,问题是太繁琐,所以Python允许你在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去:
>>> nums = [1, 2, 3]
>>> calc(*nums)
14
**关键字参数
可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。请看示例:
def person(name,