如何在函数中使用* args?

时间:2013-11-04 12:17:43

标签: python function args

这可能是一个基本问题,但不幸的是我在搜索时无法得到任何东西。

我有一个函数,当函数在命令行上运行时,使用*args来捕获参数。

基本结构如下:

def func(*args):
    <code starts>
    ...
    </code ends>

func("arg1", "arg2", "arg3")

问题在于,如果我在代码文件中传递参数,代码就可以工作,如上面的代码片段所示。我正在研究如何从命令行实际运行此代码,参数如下:

# python <file.py> arg1 arg2 arg3

为此,我明白我应该在代码文件本身中更改'func(“arg1”,“arg2”,“arg3”)'行,但我不确定它是怎么回事。

有人可以指出我如何纠正这个问题。

非常感谢

注意:两种解决方案都有效,是的,两者都是相同的。可惜我无法接受这两个答案。

2 个答案:

答案 0 :(得分:7)

sys.argv[1:]会将所有命令行参数作为列表提供。

因此,您可以在代码中执行func(*sys.argv[1:])以接收所有参数。但是,没有充分的理由使用varargs - 只需让函数接受列表args并直接传递sys.argv[1:]

答案 1 :(得分:6)

调用函数时,你会使用类似的语法:

func(*sys.argv[1:])

此处*列表前的sys.argv将列表扩展为单独的参数。

sys.argv list本身包含命令行中找到的所有参数,包括脚本名称;从第二个项目开始切片将为您提供所有传入的选项,而无需脚本名称。