用于列表时星型运算符的用途

时间:2011-11-10 09:19:44

标签: python

此示例中的星型运算符对输入参数列表的作用是什么?

def main(name, data_dir='.'):
    print 'name', type(name)

if __name__ == '__main__':
    main(*sys.argv)

具体来说,如果我使用星号运算符运行程序,则会打印:

name <type 'str'>

如果在没有明星main(sys.argv)的情况下运行,则会打印:

name <type 'list'>

2 个答案:

答案 0 :(得分:31)

*运算符unpacks an argument list。它允许您使用列表项作为单独的参数调用函数。

例如,如果sys.argv["./foo", "bar", "quux"],则main(*sys.argv)相当于main("./foo", "bar", "quux")

答案 1 :(得分:2)

main(*sys.argv)

使用列表main的内容作为sys.argv方法的相应参数调用main,在这种情况下等效于:

main(sys.argv[0])

main(sys.argv[0], sys.argv[1])

取决于sys.argv的长度。

因此,如果您使用星号调用它,它会将name传递给列表sys.argv的第一个元素。

如果您在没有星号的情况下调用它,它会将整个列表name传递给sys.argv