python 定义方法时,会出现某些传入参数的数量不确定的情况,此时需要使用到这两种符号来处理:
例如:定义一个累加器,输入的参数数目可变的情况(*)
一般定义方法时为以下的方式,
两个数字累加:
def add(param1, param2):
print(param1+param2)
三个数字累加:
def add(param1, param2, param3):
print(param1+param2+param3)
现在可以使用*来处理这个问题:
def add(*params):
sum = 0
for item in params:
sum += item
print(sum)
调用此方法:add(1, 2, 3, 4)
另外,还有另一种传参的方式
现在有一数组:arr = [1, 2, 3]
调用方法:add(*arr)
注意:传入的params参数可为空,则add()返回就是0
例如:定义录入学校人员的身份信息的方法,由于学生有成绩信息,老师有职称、工资等信息;所以定义方法时不能确定输入的参数名,此时可以使用**来定义参数名(**)
def addInfo(name, age, **others):
info = "name: %s, age: %s" % (name, age)
for item in others:
info = info + ", " + item + ": %s" % others[item]
print(info)
调用此方法:addInfo("小明", 12, score=98)
另外,调用此方法还有另一种方式:
现在有一字典值:data = {"score": 96, "subject": "语文"}
调用方法:addInfo("小明", 12, **data)
上面用到*和**来传入数组和字典的方式,相当于把数组和字典里面的项解析出来逐个传入到方法中,对于接受到的不确定的数组变量和字典变量,这种方式的传参是很有用的