sia*_*mii 86 python command-line-arguments argparse
parser.add_argument('-auto', action='store_true')
Run Code Online (Sandbox Code Playgroud)
如果-auto未指定,我如何存储假?我可以隐约记得这样,如果没有指定,它会存储None
Ray*_*ger 146
该store_true选项会自动创建默认值False.
同样,当命令行参数不存在时,store_false默认为True.
这种行为的来源简洁明了:http: //hg.python.org/cpython/file/2.7/Lib/argparse.py#l861
关于这个主题的argparse文档并不清楚,所以我现在就更新它们:http://hg.python.org/cpython/rev/49677cc6d83a
Mon*_*lto 15
Raymond Hettinger 已经回答了OP 的问题。
但是,我的小组在使用“store_false”时遇到了可读性问题。尤其是当新成员加入我们的团队时。这是因为最直观的思考方式是,当用户指定一个参数时,该参数对应的值将为 True 或 1。
例如,如果代码是 -
parser.add_argument('--stop_logging', action='store_false')
Run Code Online (Sandbox Code Playgroud)
代码阅读器可能期望当 stop_logging 中的值为 true 时,日志记录语句将关闭。但是像下面这样的代码将导致与期望的行为相反的结果 -
if not stop_logging:
#log
Run Code Online (Sandbox Code Playgroud)
另一方面,如果接口定义如下,那么“if 语句”就可以工作并且读起来更直观 -
parser.add_argument('--stop_logging', action='store_true')
if not stop_logging:
#log
Run Code Online (Sandbox Code Playgroud)
unu*_*tbu 10
同
import argparse
parser=argparse.ArgumentParser()
parser.add_argument('-auto', action='store_true', )
args=parser.parse_args()
print(args)
Run Code Online (Sandbox Code Playgroud)
赛跑
% test.py
Run Code Online (Sandbox Code Playgroud)
产量
Namespace(auto=False)
Run Code Online (Sandbox Code Playgroud)
所以它似乎False默认存储.
| 归档时间: |
|
| 查看次数: |
49698 次 |
| 最近记录: |