из sys import argv - какова функция " скрипт"

Я читаю "Learn Python The Hard Way "и был смущен частью" script " второй строки.

from sys import argv
script, filename = argv

насколько я понимаю, вторая строка говорит: script и filename составляют argv. Я попытался запустить свой код без части "скрипт", и он работал нормально. Я не уверен, какова цель этого.

4 ответов


как правило, первым аргументом исполняемого файла командной строки является имя скрипта, а остальные-ожидаемые аргументы.

здесь argv - это список, который будет содержать два значения: имя скрипта и параметр. Используя нотацию распаковки Python, вы можете написать

script = argv[0]
filename = argv[1]

as

script, filename = argv

в то же время бросая ошибки, если есть неожиданное количество аргументов (например, один или три). Это может быть хорошей идеей, в зависимости от кода, потому что это также гарантирует отсутствие неожиданных аргументов.

однако следующий код не приведет к filename фактически содержащий имя файла:

filename = argv

это так filename теперь список аргументов. Для иллюстрации:

script, filename = argv
print("Script:", script)  # Prints script name
print("Filename:", filename)  # Prints the first argument

filename = argv
print("Filname:", filename)  # Prints something like ["my-script.py", "my-file.txt"]

другие объяснили, что такое script, но оператор python называется распаковка и обычно применяется к кортежам или последовательностям.

это способ быстрого присвоения переменной для каждого значения, которое находится в кортеже (или последовательности) справа от = знак.

Это не что-то конкретное argv:

>>> a,b = ('Hello','World')
>>> a
'Hello'
>>> b
'World'

одна вещь, чтобы иметь в виду, что количество переменных на левой стороне должно соответствовать количеству элементов в последовательности справа, иначе вы получите:

>>> a,b,c = ('Hello','World')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: need more than 2 values to unpack
>>> a,b = ('Hello','World','!')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack

первый элемент argv - Это имя скрипта Python, который вы запускаете. Любые дополнительные аргументы (в данном случае имя файла) являются аргументами, переданными этому скрипту.

этим двум аргументам присваиваются имена script и filename. Вполне возможно, что script никогда не используется снова; это в основном заполнитель. Однако, если вы удалите его, вы сделаете .


argv - это список аргументов для вашей программы. Стандартное поведение оболочки включает имя самой программы в качестве первого аргумента в argv.

Python может назначать сразу несколько значений, если количество переменных на левой стороне равно размеру списка на правой стороне (он также может обрабатывать больше случаев, но это самое основное). Е. Г.

script, filename = argv

это то же самое, что

script = argv[0]
filename = argv[1]

Обратите также внимание, что этот скрипт вызовет ValueError если argv не имеет ровно два элемента.