对《艰苦学习Python》ex41中的if语句感到困惑吗?

对《艰苦学习Python》ex41中的if语句感到困惑吗?,python,if-statement,argv,sys,Python,If Statement,Argv,Sys,我一直在努力学习Python,我很难理解示例41中这部分代码中发生了什么(完整代码位于) 我想这部分与游戏中的模式转换有关,从英语到代码,但我不知道它实际上是如何做到的。我知道len()函数测量长度,但我不清楚在这种情况下sys.argv是什么,为什么它必须等于2,以及1对sys.argv[1]做了什么 非常感谢您的帮助。sys.argv似乎是一个数组,if语句表示如果数组的长度为2,数组中的第二个元素(索引1)是字符串“english”,则要使变量短语_首先等于True。len函数确实测量长度

我一直在努力学习Python,我很难理解示例41中这部分代码中发生了什么(完整代码位于)

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


非常感谢您的帮助。

sys.argv似乎是一个数组,if语句表示如果数组的长度为2,数组中的第二个元素(索引1)是字符串“english”,则要使变量短语_首先等于True。

len函数确实测量长度。在本例中,它测量列表(或通常称为数组)的长度

sys.argv表示通过命令行参数传入的字符串列表。这里有一些关于它的文档

命令行中的一个示例:

python learning.py one two
这将总共有三个参数传递到sys.argv。参数是learning.py,1和2作为字符串

代码

sys.argv[1]

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

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

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

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

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

python myScript.py english
然后该语句将返回
True

python myScript.py english