我写了这段代码:
#!/usr/bin/env python
import sys
if sys.argv[1] :
print sys.argv[1]
键入时在控制台中尝试此操作: $python py.py xxx年 那印着xxx 当我不使用任何参数时,会出现一个错误:
Traceback (most recent call last): File "py.py", line 4, in if sys.argv[1] : IndexError: list index out of range
现在有一些改变:
#!/usr/bin/env python
import sys
if sys.argv[1:] :
print sys.argv[1:]
你看我把[1]也改成了[1:],现在如果我在控制台中键入“$python py.py”,并且忘记返回无错误的参数。 幕后发生了什么?
sys.argv是一个参数列表(在终端中随命令一起传入),但如果不传递任何参数并访问空列表的索引1,则会出现明显的错误(索引器错误)。 但是,在第二种情况下,从索引1进行切片,并将列表的成员与索引>;1一起使用时,即使列表是空的,也不会出现问题,因为切片后的列表也将是空的,我们不会得到任何错误。
sys.argv
是参数列表。 因此,当您在没有任何参数的情况下执行脚本时,访问索引1的该列表为空,并且访问空列表的索引时,将引发一个IndexError
。使用第二个代码块,您将执行一个list slice,并检查来自索引1和forward的列表片段是否不为空,然后打印该列表片段。 之所以这样做是因为如果您有一个空列表,并且像这样对其执行切片操作,那么切片将返回一个空列表。
相关问题 更多 >
编程相关推荐