You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 10:00:56