#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:
sys.argv
представляет собой список, содержащий аргументы командной строки: если вы запустите программу следующим образом:./foo one two 3
, список будет содержать значения['./foo', 'one', 'two', '3']
mylist[a:]
является частью спискаmylist
, начинающегося с индексаa
до последнего элементаif list
верно, если список не пуст- в целом:
port
имеет значение 8000, если оно не указано в качестве первого аргумента командной строки
Комментарии:
1. Вы забыли о.
sys.argv[0]
Ответ №3:
По-видимому, этот код задает сообщение, используемое для связи с любым компьютером, отправившим запрос. 8000 — это TCP-порт по умолчанию, поэтому он будет использоваться, если порт не был указан.