python - 如何创建一个像 argparse.ArgumentParser 一样工作的“容器”?
问题描述
在编写代码时,我们大多数人都会使用如下 Python 模块argparse
:
import argparse
parser = argparse.ArgumentParser(description='descript')
parser.add_argument('integers', type=int, help='a number')
opt = parser.parse_args()
train(opt)
然后我们可以将 传递opt
给下一个函数。并且该函数可以通过opt.integers
.
在.ipynb
文件中进行测试时,导入argparse
和使用add_argument
过于复杂。我想知道是否有这样的容器,如下所示:
opt = SpecificContainer()
opt.length = 10
opt.dim = 3
opt.batch = 8
train(opt)
也就是说,我得到了opt
变量。我可以opt.val1 = 10
用来设置值。我可以将opt
变量传递给其他函数。
解决方案
更好的方法是不要将所有代码与argparse
依赖项耦合。argparse
相反,让您的函数接受一个定义明确的单个参数列表,并在您解析命令行时从结果中挑选它们。
def train(length: int, dim: int, batch: int):
...
opt = parser.parse_args()
train(opt.length, opt.dim, opt.batch)
推荐阅读
- go - Go 频道准备就绪
- firebase - 如何在 Firebase 主机上部署 express 应用程序
- git - 无法推送到组织存储库,我是所有者
- javascript - 如何检查最后一个元素是否有 CSS 类?
- django - 如何用漂亮的汤解析脚本?
- kong - 无法在 Kong 中启用会话插件(即使升级到最新版本)
- react-native - 在本机反应中找不到堆栈导航器中的键的路由
- node.js - Mongoose 在验证器中访问“this”是未定义的
- perl - Perl S3 使用 Net::Amazon::S3 分段上传
- java - 使用 CGLib 动态创建 POJO/bean 并设置值