如何为多值选项设置默认值

1 投票
1 回答
2852 浏览
提问于 2025-04-18 13:21

我想要像这样:

import click

@click.command()
@click.option("-r", "--range", nargs=2, type=int, default=(1,2), show_default=True)
def scale(range):
   print "scale to %d - %d" % range

if __name__ == '__main__':
   scale()

但是这里多值选项的默认值不起作用。该怎么正确设置呢?

1 个回答

3

这个功能现在已经在主版本中实现了,并将在v3发布时正式可用。它的工作方式和你写的一样,可以通过将一个可迭代的对象传递给default=来使用。同时,nargs=multiple=True也都支持,可以单独使用,也可以一起使用

@click.command()
@click.option('--foo', default=[23, 42], type=click.FLOAT, multiple=True)
def cli(foo):
    for item in foo:
        click.echo(item)

@click.command()
@click.option('--arg', default=((1, 2), (3, 4)), nargs=2, multiple=True, type=click.INT)
def cli(arg):
    for item in arg:
        click.echo('<%d|%d>' % item)

撰写回答