Python sys.argv负参数索引

Python sys.argv负参数索引,python,argv,sys,Python,Argv,Sys,为什么索引为负的sys.argv允许打印与sys.argv[0]相同的值?同样,它允许传递最多个参数 因此,在developers.google.com上调用hello.py,比如下面的一个(带有3个参数,包括脚本名):python hello.py Sumit Test 将允许访问sys.argv[-1]、-2]和[-3],并且它们都打印与argv[0]相同的值,即hello.py,但argv[-4]将抛出预期错误: Traceback (most recent call last): F

为什么索引为负的sys.argv允许打印与sys.argv[0]相同的值?同样,它允许传递最多个参数

因此,在developers.google.com上调用hello.py,比如下面的一个(带有3个参数,包括脚本名):python hello.py Sumit Test

将允许访问sys.argv[-1]、-2]和[-3],并且它们都打印与argv[0]相同的值,即hello.py,但argv[-4]将抛出预期错误:

Traceback (most recent call last):
  File "hello.py", line 35, in <module>
    main()
  File "hello.py", line 31, in main
    print (sys.argv[-4])
IndexError: list index out of range

因为您只传递了三个参数,下面的示例应该可以帮助您理解:

>>> [1,2,3][-1]   # working 
3
>>> [1,2,3][-2]   # working 
2
>>> [1,2,3][-3]   # working 
1
>>> [1,2,3][-4]   # exception as in your code 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
请注意输出:

$ python main.py one two 
3
two one main.py
main.py one two

传递的参数数为三个
argv[-1]
是最后一个参数,它是从列表末尾开始的两个负索引计数:

>>> ['a', 'b', 'c'][-1]
'c'
>>> ['a', 'b', 'c'][-2]
'b'
>>> ['a', 'b', 'c'][-3]
'a'

请求[-4]将超出列表的末尾,给出一个例外。

@RichieHindle and Grijesh-谢谢你的回答。但是在这种情况下,-1应该返回传递的最后一个参数,而不是argv[0]。-2和-3也是如此?因此,当我以:python hello.py Sumit test运行程序时,argv[0]是hello.py,根据答案,argv[-1]应该是“test”,但它打印“hello.py”。argv[-2]和[-3]@sumit yes
argv[-1]
=最后一个参数,用示例检查更新的答案我无法理解这部分“sys.argv[-1]、-2]和[-3],它们都打印了与argv[0]相同的值”。“python hello.py Sumit Test”怎么可能是“Test”“Sumit”“hello.py”@olrg-我编辑了这个问题,在其中插入了代码。行打印(sys.argv[-3])就是我所指的。
$ python main.py one two 
3
two one main.py
main.py one two
>>> ['a', 'b', 'c'][-1]
'c'
>>> ['a', 'b', 'c'][-2]
'b'
>>> ['a', 'b', 'c'][-3]
'a'