在python开发过程中,有些函数的参数前面是带*的,和**的,也有的没有任何*,怎么理解,什么意思呢?
def add(data):
sum = 0
for i in data:
sum = sum + i
return sum
def add(*data):
sum = 0
for i in data:
sum = sum + i
return sum
在第一个例子中,我们如果想利用计算和,传参的正确方法是:add([23,45,67])
在第二个例子中,我们正确的传参是:add(2,34,5,6) 也可以这样 add(2,3),如果想借助第二个例子,把列表或者元组传入,
add([3,4,5,6]) 就会报错,正确的写法可以写成add(*[3,4,5,6]),在list或者tuple传入的时候,前面加入*,会自动的将list或者tuple转化为可变参数传入
**如何理解的?首先如果在一个参数前面有这样的符号,那么这就是关键字参数。主要作用,能够扩展函数的功能。
比如有这样函数定义:
def add(**data):
print data
add(data={'a':1,'b':4,'c':5})
>>{'data': {'a': 1, 'c': 5, 'b': 4}}
add(city='beijing',age=10)
>>{'city': 'beijing', 'age': 10}
**data 是关键字参数,接收的是一个dict。