嵌套参数分析器
nestargs的Python项目详细描述
嵌套参数
nestargs是一个定义嵌套程序参数的python库。它基于argparse。
用日语阅读:日本語
安装
pip install nestargs
基本用法
以与argparse相同的方式定义程序参数嵌套结构可以通过在程序参数名中放置点来表示。
importnestargsparser=nestargs.NestedArgumentParser()parser.add_argument("--apple.n",type=int)parser.add_argument("--apple.price",type=float)parser.add_argument("--banana.n",type=int)parser.add_argument("--banana.price",type=float)args=parser.parse_args(["--apple.n=2","--apple.price=1.5","--banana.n=3","--banana.price=3.5"])# => NestedNamespace(apple=NestedNamespace(n=2, price=1.5), banana=NestedNamespace(n=3, price=3.5))
让我们仅去掉程序参数apple。
args.apple# => NestedNamespace(n=2, price=1.5)
你也可以得到每个值。
args.apple.price# => 1.5
如果你想要字典格式,你可以用这种方法。
vars(args.apple)# => {'n': 2, 'price': 1.5}
从函数定义程序参数
函数register_arguments
可用于从任何函数的参数定义程序参数。
在下面的示例中,带有多个前缀的程序参数被定义为函数total_price
的n
和price
参数。此时,程序参数的行为将根据参数的默认值自动确定
importnestargsdeftotal_price(n=1,price=1.0):returnn*priceparser=nestargs.NestedArgumentParser()parser.register_arguments(total_price,prefix="apple")parser.register_arguments(total_price,prefix="banana")args=parser.parse_args(["--apple.n=2","--apple.price=1.5","--banana.n=3","--banana.price=3.5"])# => NestedNamespace(apple=NestedNamespace(n=2, price=1.5), banana=NestedNamespace(n=3, price=3.5))
可以使用从程序参数获取的值调用函数,如下所示:
apple=total_price(**vars(args.apple))banana=total_price(**vars(args.banana))print(apple+banana)# => 13.5