parse_args()和parse_known_args()的用法和区别
在使用python命令行解析包argparse
的时候,遇到了parse_args()
和parse_known_args()
两种用法,遂查资料搞清楚两个函数的差别并记录。
1 parse_args()
直接举例子说明。
- 新建
test.py
文件,代码如下:import argparse parse = argparse.ArgumentParser() parse.add_argument('--flag_int', type=int, default=2, help='flag_int') opt1 = parse.parse_args() print(opt1)# opt2 = parse.parse_known_args() # print(opt2) # print(opt2[0]) # print(opt2[1])
- 在终端输入下面的命令并执行:
python test.py --flag_int 3
输出结果:
Namespace(flag_int=3)
可以看出
parse_args()
函数返回的是一个命名空间(NameSpace
),这个NameSpace
中有一些变量,就是我们add_argument()
的那些参数。 - 如果在终端输入下面的命令并执行:
python test.py --flag_int 3 --flag_float 0.3
可以看到命令比
add_argument()
的多了一个参数,当然会报错:usage: test.py [-h] [--flag_int FLAG_INT] test.py: error: unrecognized arguments: --flag_float 0.3
而
parse_known_args()
则解决了这个问题。
2 parse_known_args()
同样直接用简单的例子说明问题。
- 将test.py的代码改为:
import argparse parse = argparse.ArgumentParser() parse.add_argument('--flag_int', type=int, default=2, help='flag_int') # opt1 = parse.parse_args() # print(opt1)opt2 = parse.parse_known_args() print(opt2) print(opt2[0]) print(opt2[1])
- 在终端输入下面的命令并执行:
python test.py --flag_int 3
输出结果:
(Namespace(flag_int=3), []) Namespace(flag_int=3) []
可以看出
parse_known_args()
返回的是一个有两个元素的元组,第一个元素是NameSpace
,和parge_args()
返回的NameSpace
完全相同,第二个是一个空列表,列表的作用下面可以看出。 - 如果在终端输入下面的命令并执行:
python test.py --flag_int 3 --flag_float 0.3
可以看到命令比
add_argument()
的多了一个参数,但是并没有报错,输出结果如下:(Namespace(flag_int=3), ['--flag_float', '0.3']) Namespace(flag_int=3) ['--flag_float', '0.3']
可以看出,相对于上一条命令多余的东西,以空格为分节符,以字符串的形式存放在列表中。
parse_args()和parse_known_args()的用法和区别相关推荐
- python 类变量、实例变量、参数、实例方法、类方法、静态方法 的用法和区别
#!/usr/bin/env python # -*- encoding: utf-8 -*- """ @Introduce : 类变量.实例变量.参数.实例方法.类方法 ...
- kmalloc/kfree,vmalloc/vfree函数用法和区别
kmalloc/kfree,vmalloc/vfree函数用法和区别 1.kmalloc 1>kmalloc内存分配和malloc相似,除非被阻塞否则他执行的速度非常快,而且不对获得空间清零. ...
- Javascript:history.go()和history.back()的用法和区别
Javascript:history.go()和history.back()的用法和区别 简单的说就是:go(-1): 返回上一页,原页面表单中的内容会丢失:back(): 返回上一页,原页表表单中 ...
- set和enum类型的用法和区别
mysql中的set和enum类型的用法和区别 mysql中的enum和set其实都是string类型的而且只能在指定的集合里取值, 不同的是set可以取多个值,enum只能取一个值. 1 2 3 ...
- PHP中MySQL、MySQLi和PDO的用法和区别
MySQL 是 PHP 操作 MySQL 数据库最原始的 Extension.MySQLi 的 i 代表 Improvement ,提供了相对进阶的功能,就 Extension 而言,本身也增加了安全 ...
- Java-线程中sleep()、wait()和notify()和notifyAll()、suspend和resume()、yield()、join()、interrupt()的用法和区别
Java线程中sleep().wait()和notify()和notifyAll().suspend和resume().yield().join().interrupt()的用法和区别 从操作系统的角 ...
- ASP.NET Application,Session,Cookie和ViewState等对象用法和区别
ASP.NET Application,Session,Cookie和ViewState等对象用法和区别 在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,C ...
- Java学习笔记1:Java中有关print、println、printf的用法和区别
Java学习笔记1:Java中有关print.println.printf的用法和区别 最近在学习java,写一些笔记记录下. 1.print()函数是一般的标准输出,但是不换行. 2.println ...
- Application,Session,Cookie和ViewState等对象用法和区别
在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,Cookie,ViewState和Cache等.下面分别介绍它们的用法和区别. 方法 ...
最新文章
- 压力测试 闪存_产品评测 | HPE Nimble AF全闪存系列,诠释真正的高端存储
- 2021年机器学习的下一步是什么?
- ExtJs4–表格--Grid
- py文件打包或apk_Python文件打包成exe很简单,如果安卓手机也能运行的软件你会吗...
- 用python画画如何保存_python画图后怎么保存
- [转]C++中sleep()函数的使用
- 20175320 2018-2019-2 《Java程序设计》第4周学习总结
- .NET Core 3.0 构建和部署
- NullPointerException at org.mapstruct.ap.internal.processor.DefaultVersionInformation.createManifest
- 在Oracle DG Standby库上启用flashback database功能
- It's a beautiful world!
- *printf()格式化串安全漏洞分析(上)
- FB是磁珠的符号,磁珠有很高的电阻率和磁导率,他等效于电阻和电感串联
- .NET Core 之 七 EF Core(五)
- staring mysql_mysql启动错误:Starting MySQL.. ERROR! The server quit without updating PID file错误...
- MFC检测程序未响应
- VC++获取磁盘剩余空间(附源码)
- 关于PGP的简单使用
- 美容美发美甲行业门店痛点和解决方案
- occt 几何图形库入门01