Python:一次赋值多个变量:将所有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 个回答
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:])