3

我一直在努力学习 Python,但我无法理解示例 41 中这部分代码中发生的情况(完整代码位于http://learnpythonthehardway.org/book/ex41.html)。

PHRASE_FIRST = False
if len(sys.argv) == 2 and sys.argv[1] == "english":
    PHRASE_FIRST = True

我认为这部分与游戏中的切换模式有关,从英语到代码,但我错过了它实际上是如何做到的。我知道 len() 函数测量长度,但我很困惑 sys.argv 在这种情况下是什么,为什么它必须等于 2,以及 1 对 sys.argv[1] 做了什么。

非常感谢您的帮助。

4

3 回答 3

2

len 函数确实测量长度。在这种情况下,它正在测量列表(或通常称为数组)的长度。

sys.argv表示通过命令行参数传入的字符串列表。这是一些关于它的文档http://docs.python.org/2/library/sys.html

命令行中的示例:

python learning.py one two

这将总共有三个参数传递到 sys.argv。参数是 learning.py,一和二是字符串

编码,

sys.argv[1]

正在检索 sys.argv 列表的索引 1 中存储的任何内容。对于上面的示例,这将返回字符串“one”。重要的是要记住 python 列表是零索引的。非空列表的第一个元素总是索引 0。

于 2013-08-01T00:58:29.783 回答
1

sys.argv接受可以像列表一样访问的命令行参数

sys.argv[0]始终是脚本的名称,其余的跟随

if()您的语句的前半部分len(sys.argv) == 2用于确保您没有得到IndexoutOfBoundsException,如果返回 false,程序将退出并且不调用下一个可能出错的语句。

下一条语句检查程序的命令行参数sys.argv[1] == "english",只是确保输入了正确的命令行参数。如果你像这样运行程序

python myScript.py english

然后该语句将返回True

于 2013-08-01T01:06:03.047 回答
0

sys.argv 似乎是一个数组,if 语句是说如果数组的长度是 2 并且数组中的第二个元素(索引 1)是字符串“english”,那么要使变量 PHRASE_FIRST 等于真的。

于 2013-08-01T00:58:13.067 回答