如何使用defopt定义带无默认值关键字参数的函数
让defopt中无默认值参数仅以关键字形式在CLI传入的方案
要实现你想要的效果,只需要将greeting参数移到函数定义的*符号之后,把它变成Python关键字-only参数。defopt会自动识别这类参数为CLI中的选项(必须用--参数名传入),同时保留其无默认值的必填特性。
修改后的代码如下:
def main(*, greeting, count=1): """ Display a friendly greeting. :param str greeting: Greeting to display :param int count: Number of times to display the greeting """ for _ in range(count): print(greeting) if __name__ == '__main__': defopt.run(main)
也可以通过类型注解显式指定参数类型(效果一致):
def main(*, greeting: str, count=1): """ Display a friendly greeting. :param str greeting: Greeting to display :param int count: Number of times to display the greeting """ for _ in range(count): print(greeting) if __name__ == '__main__': defopt.run(main)
现在你就能用目标方式调用脚本:python main.py --greeting xyz --count 5
如果未传入--greeting参数,defopt会自动抛出错误提示缺少必填项,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Dingu Sagar
相关产品推荐
相关产品推荐

