如何在Python Click中为其他参数设置option的默认值?

问题描述 投票:0回答:1

是否可以在单击中为另一个参数定义选项的默认值?

我想要的是类似的东西:

@click.command()
@click.argument('project')
@click.option('--version', default=project)
def main(project, version):
  ...

如果选项--version为空,它将自动获取project的值。这样可能吗?

python click python-click
1个回答
1
投票
您可以尝试将版本设置为无。如果用户设置了它,它将被覆盖,但是如果没有设置,则将其设置为在主功能中投影。

@click.command() @click.argument('project') @click.option('--version', default=None) def main(project, version): if version is None: version = project print("proj", project, "vers", version) if __name__ == "__main__": main()

示例用法:

$ python3 clicktest.py 1 proj 1 vers 1 $ python3 clicktest.py 1 --version 2 proj 1 vers 2

要在装饰器中执行此操作,可以利用callback选项,该选项接受callback

(context, param, value)

© www.soinside.com 2019 - 2024. All rights reserved.