此示例中的星型运算符对输入参数列表的作用是什么?
def main(name, data_dir='.'):
print 'name', type(name)
if __name__ == '__main__':
main(*sys.argv)
具体来说,如果我使用星号运算符运行程序,则会打印:
name <type 'str'>
如果在没有明星main(sys.argv)
的情况下运行,则会打印:
name <type 'list'>
答案 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
。