我正在练习41,说实话我非常困惑。我不知道是不是因为我已经看了几个小时该死的东西,如果我的大脑被炸了,或者是什么?
我在之前的章节中已经过了下面的内容,但由于某些原因,这并不是用英语翻译给我的。
PHRASE_FIRST = False
if len(sys.argv) == 2 and sys.argv[1] == "english":
PHRASE_FIRST = True
我认为它的含义是,如果“phrase_first”为false,请阅读列表,如果“phrase_first”为true则读取英文列表?我不知道?我认为这是中线,真的让我搞砸了。
我需要英语分解让我重回正轨。
答案 0 :(得分:4)
不,代码将PHRASE_FIRST
设置为False
。
然后 sys.argv
list已经过测试;如果该列表中有2个值,和,则第二个值等于字符串"english"
,则PHRASE_FIRST
将反弹为True
。
sys.argv
是命令行参数列表; sys.argv[0]
是脚本的名称,该列表中的任何额外元素都是在命令行中传入的字符串:
python script.py foo bar
变为
['script.py', 'foo', 'bar']
sys.argv
中的。在这种情况下,如果您使用以下命令运行脚本:
python script.py english
然后PHRASE_FIRST
设置为True
,否则保持False
。
答案 1 :(得分:3)
它正在做的是将变量PHRASE_FIRST
设置为False
,或者在某种情况下True
。第一部分很简单:
PHRASE_FIRST = False
如果:
,第二部分会将PHRASE_FIRST
重置为True
len(sys.argv) == 2 and sys.argv[1] == "english"
sys.argv
是命令行参数,从程序名称开始,即exercise_41.py english
变为['exercise_41.py', 'english']
,和表示第二个参数({{1}必须是“英语”
如果没有sys.argv[1])
检查,第二部分就会超出范围。这是len
的唯一原因。如果这些都是真的,
len
技术上可以更直接地重写所有三行:
PHRASE_FIRST = True
但这对于初学者来说有点难以理解