关于python:如何在函数中使用* args?

How to use *args in a function?

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

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

基本结构如下:

1
2
3
4
5
6
def func(*args):
    <code starts>
    ...
    </code ends>

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

这里的问题是,如果我像上面的代码片段中看到的那样在代码文件本身中传递参数,代码就会工作。我正在研究如何从命令行实际运行此代码,参数如下:

1
# python <file.py> arg1 arg2 arg3

为此,我理解我应该更改代码文件本身中的行"func"("arg1"、"arg2"、"arg3"),但我不确定它是如何变化的。

有人能指出我该怎么改正吗?

谢谢

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


sys.argv[1:]将把所有命令行参数作为一个列表提供给您。

所以您可以在代码中执行EDOCX1[1]来接收所有参数。但是,没有很好的理由使用varargs——只需让函数接受一个列表args,并直接传递sys.argv[1:]


调用函数时,您将使用类似的语法:

1
func(*sys.argv[1:])

在这里,sys.argv列表之前的*将列表扩展为单独的参数。

sys.argv列表本身包含在命令行中找到的所有参数,包括脚本名;从第二个项目开始对其进行切片可以提供不带脚本名传入的所有选项。