有些时候我们可能遇到参数的个数并不固定的情况,比如1+2+3+……+n;函数定义如下
def calc(numbers):
sum = 0
for n in numbers:
sum = sum + n*n
return sum
上面这种情况只能传一个参数,而且参数一般是list或tuple,调用方式:calc([1,3,5]);
定义可变参数主要在参数前增加*号,参数接收到的是一个tuple,可以任意个参数,例如:
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum +n*n
return sum
//调用方式
calc(1,3,5)
nums = [1,2,3]
calc(*nums)
关键字参数
关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动封装为一个dict.
def person(name,age,**kw):
print('name:',name,'age:',age,'other:',kw)
命名关键字参数
命名关键自参数,可以限制关键字参数的名字,例如,只接收city和job作为关键字参数。这种方式定义的函数如下
def person(name,age,*,city,job):
print(name,age,city,job)
//和关键字参数**kw不同,命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数
//调用方式
person('jack',24,city='beijing',job='Engineer')