关于python:在List上使用时星型运算符的用途

Purpose of star operator when used on List

本问题已经有最佳答案,请猛点这里访问。

在这个例子中,star操作符对输入参数列表做了什么?

1
2
3
4
5
def main(name, data_dir='.'):
    print 'name', type(name)

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

具体来说,如果我用star操作符运行程序,它将打印:

1
name <type 'str'>

如果运行时没有星体main(sys.argv),则打印:

1
name <type 'list'>


*运算符解包参数列表。它允许您使用列表项作为单个参数调用函数。

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


1
main(*sys.argv)

以列表sys.argv的内容调用main作为main方法的各自参数,在这种情况下等同于:

1
main(sys.argv[0])

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

取决于sys.argv的长度。

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

如果您不使用星号来命名它,它会传递给name整个列表sys.argv