python里星号有两种意思
1. 定义函数时一般情况下,函数的参数接受指定个数的参数,比如def func(a, b, c):
print a, b, c函数func接受三个参数,多余三个参数的调用将会报错。但有时候不确定会有多少个参数,这时就可以用星号来实现。def func(a, b, c, *rest):
print a, b, c
print rest
func(1, 2, 3, 4, 5, 6)rest会接受除1, 2, 3之外的其他参数,也就是4,5,6并把他们放到一个tuple里,rest=(4, 5, 6)。在Python3中,这种用法也会被用到赋值时,比如name, age, *rest = ('tom', 12, 178, 140)
2. 调用函数时此时,星号作用于tuple/list/str前,意思是解包(unpack)tuple/list/str,解包后的tuple/list/str将不再是一个参数,而是每个元素都是一个函数参数,依次传递给函数,例如def func(a, b, c):
print a, b, c
p = [1, 2, 3]
# func(p) # error, because func expect 3 parameters, but only 1 given
func(*p) # work!如果此时星号被作用于一个dict前,那么只有dict的key会被解包,然后作为参数传递,例如d = {'key1': 'v1', 'key2': 'v2', 'key3': 'v3'}
func(*d) # output: key1 key2 key3
网友评论