gpt4 book ai didi

Python3 argparse set_defaults 不将字符串作为选项名称?

转载 作者:行者123 更新时间:2023-11-28 20:35:48 24 4
gpt4 key购买 nike

我是 argparse 的新手,所以这可能是基础。

我更喜欢将所有字符串常量定义一次 (blah = 'foo'),然后在整个代码中使用它。当我到达 set_defaults 时,似乎我仅限于 kwarg 类型的参数。

也就是说,parser.set_defaults(NUM=ONE) 不会将 NUM 视为字符串。这是一个更完整的示例:

ONE = 'one'
TWO = 'two'
SIX = 'six'
NUMBER_OPTS = [ONE, TWO, SIX]
NUM = 'num'

parser = argparse.ArgumentParser()
pform = parser.add_mutually_exclusive_group()
for opt in NUMBER_OPTS:
pform.add_argument('--'+opt, dest=NUM, action='store_const', const=opt)
parser.set_defaults(NUM=ONE) # Can't find a syntax to make this DWIM
args = parser.parse_args()
print("%s is %s" % (NUM, vars(args)[NUM]))

因此,虽然 add_argument 将字符串作为目标,但 set_defaults 不会。

最佳答案

可以使用字典扩展:

parser.set_defaults(**{NUM: ONE})

关于Python3 argparse set_defaults 不将字符串作为选项名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46241912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com