Распаковка, *args и **kwargs в сигнатурах и вызовах
Содержание курса
Собери аргументы консольной команды
Что уже дано
В редакторе есть каркас функции build_command(program, *arguments, **options). Проверяющая система сама вызывает эту функцию с разными позиционными аргументами и именованными опциями; заранее созданных файлов или глобальных объектов нет.
Что нужно сделать
Реализуйте build_command(program, *arguments, **options) -> list[str]. Функция должна собрать части консольной команды по правилам:
- первый элемент — строковое представление
program; - затем идут строковые представления всех
argumentsв исходном порядке; - опции обрабатываются в алфавитном порядке ключей, а
_в ключе заменяется на-; - значение
Trueдобавляет один флаг--имя; FalseиNoneпропускаются;- любое другое значение добавляет два элемента:
--имяи строковое представление значения.
Ввод и вывод
stdin не используется. Печатать через print в stdout ничего не нужно. Проверяющая система вызывает build_command напрямую: program — произвольное значение имени программы, arguments — произвольное число позиционных значений, options — именованные опции. Функция возвращает list[str] и не запускает собранную команду.
Пример использования
print(repr(build_command('pytest', 'tests/unit', quiet=True, max_fail=2)))
Результат:
['pytest', 'tests/unit', '--max-fail', '2', '--quiet']
О данных в ответах
Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.
Как проверяется решение
Проверяются функции и их результаты. Собственный запуск выполняет ваш код без авторских тестов. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.
Отправьте решение, чтобы увидеть результаты тестов.
