在下面的代码中,我知道sys.argv使用列表,但是我不清楚索引是如何在这里使用的。
def main():
if len(sys.argv) >= 2:
name = sys.argv[1]
else:
name = 'World'
print 'Hello', name
if __name__ == '__main__':
main()
如果我改变了
name = sys.argv[1]
至
name = sys.argv[0]
并为其返回的参数键入内容:
Hello C:\Documents and Settings\fred\My Documents\Downloads\google-python-exercises
\google-python-exercises\hello.py
这是有意义的。
有人能解释一下2在这里是怎么用的吗:
if len(sys.argv) >= 2:
以及1在这里的用法:
name = sys.argv[1]
发布于 2010-04-13 07:11:19
sys.argv
是传递给Python程序的参数列表。第一个参数sys.argv[0]
实际上是程序被调用时的名称。这不是Python的事情,而是大多数操作系统的工作方式。sys.argv[0]
存在的原因是,您可以根据程序的调用方式来更改程序的行为。因此,sys.argv[1]
是您实际传递给程序的第一个参数。
因为Python中的列表(像大多数序列一样)从0开始索引,并且索引超过列表的结尾是错误的,所以需要检查列表的长度是否为2或更长,然后才能访问sys.argv[1]
。
发布于 2010-04-13 07:12:22
简而言之,sys.argv
是用于运行程序的命令中出现的单词的列表。第一个单词(列表的第一个元素)是程序的名称,列表的其余元素是提供的任何参数。在大多数计算机语言(包括Python)中,列表从零开始建立索引,这意味着列表中的第一个元素(在本例中是程序名)是sys.argv[0]
,第二个元素(第一个参数,如果有的话)是sys.argv[1]
,依此类推。
测试len(sys.argv) >= 2
简单地检查列表的长度是否大于或等于2,如果至少有一个参数提供给程序,就会出现这种情况。
发布于 2010-04-13 22:47:08
因此,如果我想返回一个名字和姓氏,比如: Hello Fred Gerbig我会使用下面的代码,这个代码可以工作,但是它实际上是最正确的方法吗?
import sys
def main():
if len(sys.argv) >= 2:
fname = sys.argv[1]
lname = sys.argv[2]
else:
name = 'World'
print 'Hello', fname, lname
if __name__ == '__main__':
main()
编辑:发现上面的代码使用2个参数工作,但使用1崩溃。尝试将len设置为3,但没有做任何事情,仍然崩溃(重新阅读其他答案,现在理解为什么3什么都不做)。如果只输入了一个参数,我如何绕过这些参数?或者错误检查返回“您必须输入2个参数”会是什么样子?
编辑2:弄清楚了:
import sys
def main():
if len(sys.argv) >= 2:
name = sys.argv[1] + " " + sys.argv[2]
else:
name = 'World'
print 'Hello', name
if __name__ == '__main__':
main()
https://stackoverflow.com/questions/2626026
复制相似问题