скажем, в командной строке у вас есть:
C:\> C:\Documents and Settings\fred\My Documents\Downloads\google-python-exercises
\google-python-exercises\hello.py John
чтобы было легче читать, давайте просто сократим это до:
C:\> hello.py John
argv
представляет все элементы, которые поступают через ввод командной строки, но отсчет начинается с нуля (0), а не с одного (1): в этом случае "hello.py
" является элементом 0, "John
"это элемент 1
другими словами, sys.argv[0] == 'hello.py'
и sys.argv[1] == 'John'
... но посмотрите, сколько это элементов? 2, верно! поэтому, даже если числа 0 и 1, здесь есть 2 элемента.
len(sys.argv) >= 2
просто проверяет, ввели ли вы хотя бы два элемента. в этом случае мы ввели ровно 2.
теперь давайте переведем ваш код на английский:
define main() function:
if there are at least 2 elements on the cmd-line:
set 'name' to the second element located at index 1, e.g., John
otherwise there is only 1 element... the program name, e.g., hello.py:
set 'name' to "World" (since we did not get any useful user input)
display 'Hello' followed by whatever i assigned to 'name'
так что это значит? это означает, что если вы введете:
- "
hello.py
", код выводит "Hello World
", потому что вы не дали имя
- "
hello.py John
", код выводит "Hello John
", потому что вы сделали
- "
hello.py John Paul
", код все еще выводит "Hello John
", потому что он не сохраняет и не использует sys.argv[2]
, который был "Paul
" - вы можете видеть в этом случае, что len(sys.argv) == 3
, потому что там 3 элемента в списке sys.argv
?