Объяснение кода http-сервера Python?

#python #http #sys

#питон #http #система

Вопрос:

Я видел много примеров http-серверов, написанных на python, в Интернете, и все они включают

 if sys.argv[1:]:
    port = int(sys.argv[1])
else:
    port = 8000
 

Кто-нибудь может объяснить мне эту строку? Спасибо

Комментарии:

1. Если порт был указан в качестве аргумента, используйте его. В противном случае используйте 8000

Ответ №1:

sys.argv представляет собой список строк, содержащих аргументы, которые были переданы в скрипт Python из командной строки. sys.argv[0] это имя скрипта, и оно всегда передается неявно. Аргументы, переданные пользователем, будут сохранены в sys.argv[1] , sys.argv[2] , и т.д.

Имея это в виду, код можно объяснить следующим образом:

 # If there is more than 1 item in sys.argv...
if sys.argv[1:]:
    # ...get sys.argv[1], convert it into an integer, and assign it to port
    port = int(sys.argv[1])
# Otherwise, assign port to 8000
else:
    port = 8000
 

Ответ №2:

  1. sys.argv представляет собой список, содержащий аргументы командной строки: если вы запустите программу следующим образом: ./foo one two 3 , список будет содержать значения ['./foo', 'one', 'two', '3']
  2. mylist[a:] является частью списка mylist , начинающегося с индекса a до последнего элемента
  3. if list верно, если список не пуст
  4. в целом: port имеет значение 8000, если оно не указано в качестве первого аргумента командной строки

Комментарии:

1. Вы забыли о. sys.argv[0]

Ответ №3:

По-видимому, этот код задает сообщение, используемое для связи с любым компьютером, отправившим запрос. 8000 — это TCP-порт по умолчанию, поэтому он будет использоваться, если порт не был указан.