【发布时间】:2023-03-30 01:46:01
【问题描述】:
我无法从文档中找出 argparse 的这种行为:
import argparse
parser.add_argument("--host", metavar="", dest="host", nargs=1, default="localhost", help="Name of host for database. Default is 'localhost'.")
args = parser.parse_args()
print(args)
这是带有和不带有“--host”参数的输出:
>> python demo.py
Namespace(host='localhost')
>> python demo.py --host host
Namespace(host=['host'])
特别是:为什么“--host”的参数在指定时存储在列表中,但在使用默认值时不存储?
【问题讨论】:
-
因为您指定了
nargs=1。当nargs存在时,因为您可以将nargs设置为+或更大的数字,所以结果存储在list中。但默认值是作为字符串给出的。你可以写default=["localhost"],默认也是一个列表。 -
谢谢。完全错过了。
-
default按原样添加到命名空间(type可能进行的任何转换除外)。nargs和action在大多数情况下不会影响它。
标签: python command-line-arguments argparse