Аргументы и опции

Аргументы - это обязательные параметры, которые должны идти в определённом порядке. Передаются по позиции, то есть имя аргумента при передаче не указывается.

Опции - это необязательные параметры, которые могут идти в любом порядке. Передаются по имени, выглядят как --option-name [value].

Общий вид: command [options] <arguments>. То есть сначала передаются все опции, потом все аргументы.

Аргументы и опции добавляются к команде с помощью декораторов @click.argument и @click.option.

from random import randint

import click


@click.command()
@click.option('--count', default=1, help='Количество чисел')
@click.argument('a')
@click.argument('b')
def cli(count, a, b):
    for _ in range(count):
        click.echo(randint(int(a), int(b)))


if __name__ == '__main__':
    cli()

Теперь использовать скрипт можно так:

# Генерируем случайное число от 1 до 100
python main.py 1 100

# Генерируем случайное число от 1 до 3
python main.py 1 3

# Генерируем 5 случайных чисел от 1 до 100
python main.py --count=5 1 100