首页 > 解决方案 > 如何告诉单击始终显示选项默认值

问题描述

在 Python 的Click包中,我可以为选项定义默认值:

@click.option("--count", default=1, help="Number of greetings.")

我可以指定默认值应显示在帮助中:

@click.option("--count", default=1, help="Number of greetings.", show_default=True)

如果我有很多选择

@click.option("--count-a", default=1, help="...")
@click.option("--count-b", default=2, help="...")
@click.option("--count-c", default=4, help="...")
.
.
.

我怎样才能告诉 Click 一般总是在帮助中显示默认值(没有明确添加show_default=True到每个单独选项的参数列表中)?

标签: pythoncommand-line-interfacepython-click

解决方案


可能最合适的方法是更改@click.command​​装饰器中的上下文设置。像这样:

@click.command("cli", context_settings={'show_default': True})
@click.option("-x")
@click.option("-y", default="Custom Y")
@click.option("-z", default="Custom Z", help="Value of Z.")
def cli(x, y, z):
    """Test changin context settings"""
    return "OK"

if __name__ == '__main__':
    cli()

这将打印以下内容:

Usage: test.py [OPTIONS]

  Test changing context settings

Options:
  -x TEXT
  -y TEXT  [default: Custom Y]
  -z TEXT  Value of Z.  [default: Custom Z]
  --help   Show this message and exit.  [default: False]

推荐阅读