Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用argparse在没有默认值的情况下指定可选的非布尔参数?_Python_Python 3.x_Argparse - Fatal编程技术网

Python 如何使用argparse在没有默认值的情况下指定可选的非布尔参数?

Python 如何使用argparse在没有默认值的情况下指定可选的非布尔参数?,python,python-3.x,argparse,Python,Python 3.x,Argparse,我想实现以下目标 参数具有类型float 如果未在命令行上传递,则参数名称不应在从解析器获得的命名空间中显示为键 到目前为止,我只能这样做 parser.add_argument('--exponential-decay', type=float, required=False, help='Decay parameter for exponential decay', metavar='GAMMA') 这会导致“指数衰减”:在变量(parser.p

我想实现以下目标

  • 参数具有类型
    float
  • 如果未在命令行上传递,则参数名称不应在从解析器获得的
    命名空间中显示为键
到目前为止,我只能这样做

parser.add_argument('--exponential-decay', type=float, required=False,
                    help='Decay parameter for exponential decay', metavar='GAMMA')
这会导致
“指数衰减”:在
变量(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)

如果命令行参数不存在,则提供default=argparse.SUPPRESS不会导致添加任何属性:


要在每个选项上执行此行为:
ArgumentParser(argument\u default=argparse.SUPPRESS)