我们知道*号可以借zip()函数,*zip(a,b),表示将a和b打包后的元组分解开来,注意,分解开后只能够重新打包起来,即zip(*zip(a,b)),而且分解不可逆,即令z=*zip(a,b)
,则z要重新打包才行。
1.*号在函数参数中出现,表示将传入的参数打包成一个列表(list),如:
def add(*data):
sum = 0
for i in data:
sum = sum + i
return sum
add(1,2,3,4)
结果输出为10
2.*号在传入参数列表中出现,表示将一个列表分解为多个参数,如:
y= lambda a,b,c,d:a+b+c+d
y(*[1,2,3,4])
最后输出结果也为10
- **号在函数参数中的作用和1类似,不过不是打包成一个列表,而是打包成一个字典(dictionary),例如:
def add(**data):
print data
add(city='beijing',age=10)
输出{'city': 'beijing', 'age': 10}
- **号传入参数列表中的作用和2类似,不过是将一个字典分解为多个参数,如:
def x(age,sex):
print("age is %d,sex is %s" % (age,sex))
x(**{'age':10,'sex':'M'})
输出age is 10,sex is M