练习41:学习说出面向对象

时间:2014-01-24 22:59:54

标签: python

我正在练习41,说实话我非常困惑。我不知道是不是因为我已经看了几个小时该死的东西,如果我的大脑被炸了,或者是什么?

我在之前的章节中已经过了下面的内容,但由于某些原因,这并不是用英语翻译给我的。

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

我认为它的含义是,如果“phrase_first”为false,请阅读列表,如果“phrase_first”为true则读取英文列表?我不知道?我认为这是中线,真的让我搞砸了。

我需要英语分解让我重回正轨。

2 个答案:

答案 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

但这对于初学者来说有点难以理解