Argparse中action的可选参数

1 未设置default

import argparse
 
parser = argparse.ArgumentParser()
 
parser.add_argument(
        "--relaxation", '-r', action="store_false", 
    )

parser.add_argument(
        "--save_outputs", '-s', action="store_true", 
    )
args = parser.parse_args()
print(args)

(1)不加参数执行:python test.py 结果为:

Namespace(relaxation=True, save_outputs=False)

action="store_false,默认值是True。
action="store_true,默认值是False。

(2)python test.py -r -s 加参数执行,结果为:

Namespace(relaxation=False, save_outputs=True)

action="store_false,手动指定该参数后才为False。
action="store_true,手动指定该参数后才为True。

2 设置default

import argparse
 
parser = argparse.ArgumentParser()
 
parser.add_argument(
        "--relaxation", '-r', action="store_false", default=False,
    )

parser.add_argument(
        "--save_outputs", '-s', action="store_true", default=True,
    )

args = parser.parse_args()
print(args)

(1)不加参数执行:python test.py 结果为:

Namespace(relaxation=False, save_outputs=True)

默认取default的值。
(2)python test.py -r -s 加参数执行,结果为:

Namespace(relaxation=False, save_outputs=True)

取action内的值。

3 小结

default 的优先级比未激活的 action 高,激活的 action 优先级比 default 高。即:有defualt优先default的值,有action属性优先action的值。

猜你喜欢

转载自blog.csdn.net/weixin_50008473/article/details/132181997