gpt4 book ai didi

python - 如何使用 argparse 指定一个可选的非 bool 参数而不默认?

转载 作者:太空宇宙 更新时间:2023-11-04 02:14:01 25 4
gpt4 key购买 nike

我要实现以下目标

  • 参数的类型为float
  • 如果没有在命令行上传递,则参数名称不应显示为从解析器获取的 Namespace 中的键

目前我只能这样做

parser.add_argument('--exponential-decay', type=float, required=False,
help='Decay parameter for exponential decay', metavar='GAMMA')

这导致 'exponential_decay': None 出现在 vars(parser.parse_args()) 中。我也可以使用这些信息,但我很好奇是否可以这样做。

我在 argparse 文档中没有看到任何涉及此用例的内容。

最佳答案

将默认设置为SUPPRESS:

In [637]: parser=argparse.ArgumentParser()
In [638]: parser.add_argument('--exponential-decay', type=float,
...: help='Decay parameter for exponential decay', metavar='GAMMA',
...: default=argparse.SUPPRESS);

In [640]: parser.parse_args([])
Out[640]: Namespace()
In [641]: parser.parse_args(['--exp=12'])
Out[641]: Namespace(exponential_decay=12.0)

https://docs.python.org/3/library/argparse.html#default

Providing default=argparse.SUPPRESS causes no attribute to be added if the command-line argument was not present:

关于python - 如何使用 argparse 指定一个可选的非 bool 参数而不默认?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53051581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com