首页 文章

Argparse模块类函数

提问于
浏览
0

我对模块arparse的组织有一点疑问以下代码可以在python文档在线找到

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo")
args = parser.parse_args()
print(args.echo)

我假设argparse将是模块argparse.ArgumentParser()将是模块中的一个类,所以第二行只是创建该类的对象 . 下一行我们使用点运算符调用类中定义的方法 . 直到这一点都有意义 . 我在想args将是简单的变量但是当使用点运算符访问args.echo时,args是什么类型的?是parser.parse_args()返回ArgmentParser()类型的对象 . 如果问题太天真,请道歉 .

1 回答

  • 0

    https://docs.python.org/3/library/argparse.html#the-namespace-object

    class argparse.Namespace parse_args()默认使用的简单类,用于创建保存属性并返回属性的对象 .

    尝试在您的发行版中找到 argparse.py 文件,并查看它,最好使用解析Python的编辑器 . 几乎所有的代码都是类 . 有几个实用程序基类(容器等),但关键的是使用 __all__ 列表导入的 .

    在交互式进程中运行代码并查看创建的对象也很有启发性 . 或者只是添加大量的 print(parser) 语句来查看各自的 str .

    parser = argparse.ArgumentParser()
    

    创建一个 ArgumentParser 对象 .

    a = parser.add_argument("echo")
    

    根据 action 参数创建一个 Action 对象(实际上是 Action 的子类) .

    args = parser.parse_args()
    

    创建一个 Namespace 对象,

    vars(args)
    

    args 属性创建字典对象 .

相关问题