美文网首页
python里星号

python里星号

作者: 水漾涟漪penny | 来源:发表于2019-11-18 11:44 被阅读0次

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

相关文章

网友评论

      本文标题:python里星号

      本文链接:https://www.haomeiwen.com/subject/oybvictx.html