Python:一次赋值多个变量:将所有argv参数传递给函数

1 投票
3 回答
2468 浏览
提问于 2025-04-17 00:24

我想把所有的命令行参数(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 个回答

1

试着把定义和if的顺序调换一下。

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:])
4

你在定义 createP 之前就调用了它。而且,你传给它的参数数量也不对;你需要把数组展开一下:

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

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

撰写回答