我认为处理此问题的最佳方法是对返回的名称空间进行后处理。,之所以argparse
不支持,这是因为它在一个时间解析参数1。很容易argparse
检查是否已解析某些内容(这就是互斥参数起作用的原因),但是要查看将来是否会 解析某些内容并不容易。
一个简单的:
parser.add_argument('-n','--name',...,default=None)
parser.add_argument('-p','--password',...,default=None)
ns = parser.parse_args()
if len([x for x in (ns.name,ns.password) if x is not None]) == 1:
parser.error('--name and --password must be given together')
name = ns.name if ns.name is not None else "default_name"
password = ns.password if ns.password is not None else "default_password"
看起来就足够了。