在使用argparse
时,我没有找到一种优雅/DRY的方法来使用函数/方法默认值而不是由argparse
传递的默认值。
例如,我有一些外部代码,我不想修改它。如何告诉argparse
(或在argparse
之后优雅地处理)如果用户没有在命令行上明确指定,则使用函数默认值?
import argparse
def foreign_func(fav_color="blue"):
print(fav_color)
clparser = argparse.ArgumentParser()
clparser.add_argument(
"--color",
default=None,
help="Enter color")
clargs = clparser.parse_args()
foreign_func(fav_color=clargs.color)
这将会输出 'None',而不是 "blue"
我的默认方法通常是这样的:
if clparser.color:
foreign_func(fav_color=clargs.color)
else:
foreign_func()
但这种方法看起来很笨拙,特别是当有多个命令行选项时。
编辑: 大家好,感谢您的快速反馈。为了澄清,虽然让argparse在其帮助中显示“blue”会很好,但那不是我的目标。
我正在寻找:
my_prog --color=red
>>> red
my_prog
>>> blue
使用上述代码,程序输出的是“None”,而不是“blue”。