1. 写在函数定义里的*
在许多地方常常会见到这样的写法:
def calc(*nums):
s = 0
for i in nums:
s += i
return s
这里的*含义是将传入calc里所有的参数组装成一个元组。
作用是方便调用的时候传递参数,否则如果想传入多个参数,那么首先还要组装成一个列表或者元组。
2. 写在调用函数括号里的*
例子:
nums = [1,2,3]
calc(*nums)
这用于如果已经有一个列表或者元组对象了,需要依次将其中的对象传入calc的情况。如果不这样写,就只能笨拙的写成:calc(nums[0],nums[1],...)
3. 函数定义里的**
例子:
def person(name,age,**kw):
这里的kw在调用时:
person("tom",12,city='bj',gender='male')
# 或者
kw = {city:'bj',gender:'male'}
person("tom",12,**kw)