Работа с необязательными аргументами
Необязательные аргументы обеспечивают гибкость в интерфейсах командной строки. В отличие от позиционных аргументов, необязательные аргументы:
- Предваряются дефисами (обычно
- для сокращенных форм и -- для полных форм)
- Можно опустить (программа будет использовать значения по умолчанию, если они заданы)
- Можно задавать в любом порядке
- Идеальны для параметров настройки, которые не являются обязательными для запуска программы
Создадим программу, которая демонстрирует использование необязательных аргументов.
Создание программы приветствия с использованием необязательных аргументов
-
В WebIDE создайте новый файл с именем greeting.py в директории /home/labex/project.
-
Добавьте в файл следующий код:
import argparse
## Create an argument parser
parser = argparse.ArgumentParser(description="A customizable greeting program")
## Add optional arguments
parser.add_argument("-n", "--name", default="World", help="The name to greet (default: World)")
parser.add_argument("-g", "--greeting", default="Hello", help="The greeting to use (default: Hello)")
parser.add_argument("-c", "--count", type=int, default=1, help="Number of times to display the greeting (default: 1)")
## Parse the arguments
args = parser.parse_args()
## Display the greeting
for _ in range(args.count):
print(f"{args.greeting}, {args.name}!")
-
Сохраните файл.
-
Запустите программу без аргументов:
python /home/labex/project/greeting.py
- Вы должны увидеть приветствие по умолчанию:
Hello, World!
- Теперь попробуйте настроить приветствие с использованием необязательных аргументов:
python /home/labex/project/greeting.py --name Alice --greeting Hi
- Вы должны увидеть настроенное приветствие:
Hi, Alice!
- Вы также можете использовать сокращенные формы аргументов:
python /home/labex/project/greeting.py -n Bob -g Hey -c 3
- Приветствие должно быть выведено три раза:
Hey, Bob!
Hey, Bob!
Hey, Bob!
Типы необязательных аргументов
argparse поддерживает несколько типов необязательных аргументов:
-
Флаги (Flag arguments): Булевы флаги, которые либо присутствуют, либо отсутствуют
-
Аргументы с значениями: Необязательные аргументы, которые принимают значения
Модифицируем нашу программу приветствия, чтобы включить флаг-аргумент:
-
Откройте файл greeting.py в WebIDE.
-
Добавьте флаг-аргумент для вывода в верхнем регистре:
import argparse
## Create an argument parser
parser = argparse.ArgumentParser(description="A customizable greeting program")
## Add optional arguments
parser.add_argument("-n", "--name", default="World", help="The name to greet (default: World)")
parser.add_argument("-g", "--greeting", default="Hello", help="The greeting to use (default: Hello)")
parser.add_argument("-c", "--count", type=int, default=1, help="Number of times to display the greeting (default: 1)")
parser.add_argument("-u", "--uppercase", action="store_true", help="Display the greeting in uppercase")
## Parse the arguments
args = parser.parse_args()
## Create the greeting message
message = f"{args.greeting}, {args.name}!"
## Convert to uppercase if requested
if args.uppercase:
message = message.upper()
## Display the greeting
for _ in range(args.count):
print(message)
-
Сохраните файл.
-
Запустите программу с флагом для верхнего регистра:
python /home/labex/project/greeting.py -n Charlie -u
- Вы должны увидеть приветствие в верхнем регистре:
HELLO, CHARLIE!
Параметр action="store_true" означает, что флаг не принимает значение - он либо присутствует (True), либо отсутствует (False).
Необязательные аргументы делают интерфейсы командной строки более гибкими и удобными для пользователя. Они позволяют пользователям настраивать поведение вашей программы, не требуя от них предоставлять все данные каждый раз.
В следующем шаге мы увидим, как комбинировать позиционные и необязательные аргументы в одной программе.