Python:一次分配多个值:将所有argv参数传递给函数

时间:2011-08-26 12:59:33

标签: python arguments tuples argv

我想将所有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

3 个答案:

答案 0 :(得分:4)

在定义之前,您正在调用createP。你也传递了错误数量的论点;你需要扩展数组:

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

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

答案 1 :(得分:1)

尝试在定义和if之间切换顺序。

答案 2 :(得分: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:])