1

我想将所有 argv 参数传递给一个函数。我已经创建了这段代码,但它给了我一个错误。怎么知道如何使这项工作?非常感谢您的帮助。

if __name__ == "__main__":
    import sys
    createP(sys.argv[1:])

def createP( a, b, c):
    print a + b + c

我正在使用命令行运行这个应用程序:

python filename.py d e f

返回:

NameError: name 'createP' is not defined
4

3 回答 3

4

你在createP定义它之前打电话。您还向它传递了错误数量的参数;您需要扩展数组:

def createP( a, b, c):
    print a + b + c

if __name__ == "__main__":
    import sys
    createP(*sys.argv[1:])
于 2011-08-26T13:01:28.183 回答
1

如前所述,您必须颠倒顺序。
要显示可变长度的argv,您应该编写:

def createP(*x):
    print '\n'.join(x)
    # or ' '.join(x) if you prefer

if __name__ == "__main__":
    import sys
    createP(*sys.argv[1:])

我想sys.argv的所有元素都是字符串。我对吗 ?

更新

好吧,我的回答有点愚蠢;为什么下面的代码(没有 * 用于传递参数和定义参数)不方便?:

def createP(x):
    print '\n'.join(x)
    # or ' '.join(x) if you prefer

if __name__ == "__main__":
    import sys
    createP(sys.argv[1:])
于 2011-08-26T13:11:59.927 回答
1

尝试在定义和if.

于 2011-08-26T13:01:57.160 回答