Ame*_*ina 12 python arguments argparse
我在argparse文档中阅读了以下内容:
'
store_const' - 存储const关键字参数指定的值.(请注意,const关键字参数默认为相当无用的None.)'store_const'操作最常用于指定某种标志的可选参数.例如:Run Code Online (Sandbox Code Playgroud)>>> parser = argparse.ArgumentParser() >>> parser.add_argument('--foo', action='store_const', const=42) >>> parser.parse_args('--foo'.split()) Namespace(foo=42)`
这与使用default选项设置参数的默认值有何不同?
hpa*_*ulj 15
你得到了parse_args(''.split())什么?我期待foo=None.
现在添加一个default='39'参数定义.
default是参数不存在时属性获得的值. const是给定的价值.另请注意,const仅在操作store_const(以及其他一些特殊情况)时才允许.
请注意定义store_true动作时会发生什么:
In [30]: p.add_argument('--bar', action='store_true')
Out[30]: _StoreTrueAction(option_strings=['--bar'], dest='bar', nargs=0,
const=True, default=False, type=None, choices=None, help=None, metavar=None)
Run Code Online (Sandbox Code Playgroud)
Action它创建的对象具有const=True属性和default=False属性.它也有nargs=0.这是一个store_const具有这些特殊价值的行动.
['高级'用户可以试验add_argument('--foo', nargs='?', default='one', const='two')].
下面介绍的区别default和store_const。由于命名不正确,这的确会造成混乱。
Python基本上支持两种类型的参数:
价值论证
例: --seed 42
在这里,您可以使用默认参数将参数设为默认值。但是,您必须完全提交参数,或将其包含在值中,如下所示:
parser = argparse.ArgumentParser()
parser.add_argument('--seed', default=42)
parser.parse_args('--seed 20'.split()) # seed is now 20
parser.parse_args(''.split()) # seed is now 42
parser.parse_args('--seed'.split()) # ERROR, must supply argument value
Run Code Online (Sandbox Code Playgroud)
没有价值的论点
例: --no-cuda
在这里,您不能为参数提供附加值,无论参数存在还是不存在。这些类型的参数要求,action = "store_const"并且其值必须在const参数中提供,如下所示。您不能指定其他值。
parser = argparse.ArgumentParser()
parser.add_argument('--use-cuda', action='store_const', const=False, default=True)
parser.parse_args('--use-cuda'.split()) # use-cuda is now False
parser.parse_args(''.split()) # use-cuda is now True
parser.parse_args('--use-cuda True'.split()) # ERROR: unrecognized arguments: True
Run Code Online (Sandbox Code Playgroud)
使用default与const
现在,如果上面遇到参数丢失时,您想要True而不是None怎么办?您可以default与const!结合使用!
parser = argparse.ArgumentParser()
parser.add_argument('--use-cuda', action='store_const', const=False)
parser.parse_args('--use-cuda'.split()) # use-cuda is now False
parser.parse_args(''.split()) # use-cuda is now None
parser.parse_args('--use-cuda True'.split()) # ERROR: unrecognized arguments: True
Run Code Online (Sandbox Code Playgroud)
布尔参数的快捷方式
快捷的操作store_true和store_false是一样使用store_const带有const参数值真假default分别参数值虚假与真实。
| 归档时间: |
|
| 查看次数: |
6192 次 |
| 最近记录: |