Полезные идиомы Python для проектного кода

Распаковка, *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']
О данных в ответах

Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.

РешениеPython · Python 3.12 (data: numpy, pandas, sklearn...)
Как проверяется решение

Проверяются функции и их результаты. Собственный запуск выполняет ваш код без авторских тестов. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.

Отправьте решение, чтобы увидеть результаты тестов.