joo*_*ood 7 python click python-click
是否可以将选项的默认值定义为单击中的另一个参数?
我想要的是这样的:
@click.command()
@click.argument('project')
@click.option('--version', default=project)
def main(project, version):
...
Run Code Online (Sandbox Code Playgroud)
如果该选项--version为空,它将自动采用project的值。这样的事情可能吗?
您可以尝试将版本设置为“无”。如果用户设置它,它将被覆盖,但如果用户没有设置它,则将其设置为在主函数中进行投影。
@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()
Run Code Online (Sandbox Code Playgroud)
用法示例:
$ python3 clicktest.py 1
proj 1 vers 1
$ python3 clicktest.py 1 --version 2
proj 1 vers 2
Run Code Online (Sandbox Code Playgroud)
要在装饰器中执行此操作,您可以利用该callback选项,该选项接受(context, param, value):
import click
@click.command()
@click.argument('project')
@click.option('--version', default=None,
callback=lambda c, p, v: v if v else c.params['project'])
def main(project, version):
print("proj", project, "vers", version)
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4127 次 |
| 最近记录: |