嵌套参数分析器

nestargs的Python项目详细描述


嵌套参数

nestargs是一个定义嵌套程序参数的python库。它基于argparse。

PyPIPyPI - Python VersionBuild Statuscodecov

用日语阅读:日本語

安装

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_pricenprice参数。此时,程序参数的行为将根据参数的默认值自动确定

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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java是否存在这样一种场景:Java7的Hashmap实现优于Java8的实现   java如何打印这些完整的数组?   java BuildException:未能执行aapt   java如何使用类。未知类型的集合返回的cast()   java准备语句返回错误的值   webview 安卓中的java显示身份验证对话框   java如何重命名列名JPA Hibernate   java查询从特定用户和特定时间段的Oracle表(通过比较原始表和备份表)中选择修改的行   java Youtube视频仅在三星S6设备上加载时自动暂停   未调用java RecyclerView getItemViewType   使用JSch setCommand执行带有源选项的java Shell ping命令时失败   java Hibernate:无法删除|删除分离的实例   Java Spring@MappedSuperclass字段作为子类中的@Id字段   java Android:确定单击了哪个按钮,因为该按钮未在xml中定义   如何计算java阵列内存使用率   使用Java查找按字母顺序排列的第一个字符串   javascript注销功能刷新页面,但页面仍已登录   当接口作为参数提供时,java依赖项注入不起作用   java中带原语的字符串扭曲