1、可变参数,参数个数可变
在参数前面加上* 就代表可变参数
可变参数,在函数内部其实就是一个tuple
def fun(*num):
sum = 0
for n in num:
sum = sum + n
return sum
# 由于定义函数的参数是可变,所以这里可以写任意多个参数
print(fun(1,2,3,4))
结果是:1+2+3+4=10
# 如果有个list或者tuple,想将里面的每一个元素当做参数传进去,可以在list或者tuple前面加上*,这样list或tuple中的元素就变成了可变参数传进去
nums = [1, 2, 3, 4, 5]
print(fun(*nums)) # *nums表示把nums这个list的所有元素作为可变参数传进去
结果是:1+2+3+4+5=15
二、关键字参数。
关键字参数允许你传入任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict
# 前两个是位置参数,**kw是关键字参数
def person(name, age, **kw):
print('name=',name,'age=',age,'other',kw)
# 没有传关键字参数
person('lisa', 18)
结果是:name=lisa, age=18,other{}
# 一个关键字参数 ,调用关键字参数,是键值对的形式
person('lisa', 18, city='beijing')
结果是:name=lisa, age=18,other{'city':'beijing'}
# 多个关键字参数
person('lisa', 18, city='beijing',job='teacher')
结果是:name=lisa, age=18,other{'city':'beijing', 'job':'teacher'}
# 将已有的dict当做参数传进去
# **otherDic表示把otherDic这个dict的所有key-value用关键字参数传入到函数的**kw参数,kw将获得一个dict,注意kw获得的dict是otherDic的一份拷贝,对kw的改动不会影响到函数外的otherDic。
otherDic = {'city':'beijing', 'sex':'man', 'job':'student'}
person('lisa', 18, **otherDic)
结果是:name=lisa, age=18,other{'city':'beijing','sex':'man', 'job':'teacher'}