Exercise 41: Learning To Speak Object Oriented
Solution 1:
No, the code sets PHRASE_FIRST
to False
.
Then the sys.argv
list is tested; if there are 2 values in that list, and the second value is equal to the string "english"
, then PHRASE_FIRST
is rebound to True
.
sys.argv
is the list of command-line arguments; sys.argv[0]
is the name of the script, and any extra elements in that list are strings passed in on the command line:
python script.py foo bar
becomes
['script.py', 'foo', 'bar']
in sys.argv
. In this case, if you run the script with:
python script.py english
then PHRASE_FIRST
is set to True
, otherwise it remains False
.
Solution 2:
What it's doing is setting a variable PHRASE_FIRST
to either False
, or under a certain circumstance, True
. The first part is straightforward:
PHRASE_FIRST = False
The second part resets PHRASE_FIRST
to be True if:
len(sys.argv) == 2 and sys.argv[1] == "english"
sys.argv
is the command line arguments, starting with the name of the program, i.e. exercise_41.py english
becomes ['exercise_41.py', 'english']
, and said second argument (sys.argv[1])
has to be "english"
By not having the len
check, the second part would error out of range. That's the only reason for the len
. If those are both true,
PHRASE_FIRST = True
All three lines could technically be rewritten more directly as:
PHRASE_FIRST = len(sys.argv) == 2 and sys.argv[1] == "english"
But that's a bit harder to read for beginners
Post a Comment for "Exercise 41: Learning To Speak Object Oriented"