python sys.argv[1]与sys.argv[1:]
我写了这段代码:python sys.argv[1]与sys.argv[1:],python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我写了这段代码: #!/usr/bin/env python import sys if sys.argv[1] : print sys.argv[1] 键入时在控制台中尝试以下操作: $python py.py xxx 上面印着xxx 如果不带任何参数,则会出现错误: 回溯(最后一次调用):文件“py.py”,第4行,在 if sys.argv[1]:索引器:列表索引超出范围 现在有一些变化: #!/usr/bin/env python import sys if sys.arg
#!/usr/bin/env python
import sys
if sys.argv[1] :
print sys.argv[1]
键入时在控制台中尝试以下操作:
$python py.py xxx
上面印着xxx
如果不带任何参数,则会出现错误:
回溯(最后一次调用):文件“py.py”,第4行,在
if sys.argv[1]:索引器:列表索引超出范围
现在有一些变化:
#!/usr/bin/env python
import sys
if sys.argv[1:] :
print sys.argv[1:]
您可以看到,我也将[1]更改为[1:],现在如果我在控制台中键入“$python py.py”,并且忘记了不返回错误的参数。
幕后发生了什么?
sys.argv
是一个参数列表。
因此,当您在没有任何参数的情况下执行脚本时,您正在访问的索引1的列表是空的,并且访问空列表的索引将引发一个索引器
使用第二块代码,您正在执行一个任务,检查索引1和forward中的列表切片是否为空,然后打印该列表切片。
之所以这样做,是因为如果您有一个空列表,并且像这样对它执行切片,切片将返回一个空列表
last_list = [1,2,3]
if last_list[1:]:
print last_list[1:]
>> [2,3]
empty_list = []
print empty_list[:1]
>> []
sys.argv
是参数列表。
因此,当您在没有任何参数的情况下执行脚本时,您正在访问的索引1的列表是空的,并且访问空列表的索引将引发一个索引器
使用第二块代码,您正在执行一个任务,检查索引1和forward中的列表切片是否为空,然后打印该列表切片。
之所以这样做,是因为如果您有一个空列表,并且像这样对它执行切片,切片将返回一个空列表
last_list = [1,2,3]
if last_list[1:]:
print last_list[1:]
>> [2,3]
empty_list = []
print empty_list[:1]
>> []
sys.argv是一个参数列表(与终端中的命令一起传入),但当您不传递任何参数并访问空列表的索引1时,它会给出一个明显的错误(IndexError)。
但是,在第二种情况下,如果从索引1进行切片,并使用索引大于1的列表成员,则即使列表为空,也不会出现问题,因为切片列表也将为空,并且我们不会得到错误。sys.argv是一个参数列表(您在终端中随命令一起传入)但是当您不传递任何参数并访问空列表的索引1时,它会给出一个明显的错误(IndexError)。
但是,在第二种情况下,如果您从索引1进行切片,并使用索引大于1的列表成员,那么即使列表为空,也不会出现问题,因为切片列表也将为空,并且我们不会得到错误。在if语句if len(sys.argv)>1:
@Vahidabdi我认为if sys.argv[1:]:
非常好,之后,您可以确保sys.argv[1]
存在并且可以使用。在if语句if len(sys.argv)>1:
@Vahidabdi中使用len函数,我认为if sys.argv[1::::
非常好,之后,您可以确保sys.argv[1]
存在并且可以使用。