什么是命名空间对象?

49
import argparse

parser = argparse.ArgumentParser(description='sort given numbers')
parser.add_argument('-s', nargs = '+', type = int)
args = parser.parse_args()
print(args)

当我在命令行中运行以下命令:

python3 file_name.py -s 9 8 76

它会输出 Namespace(s=[9, 8, 76])

如何访问列表[9, 8, 76]? 命名空间对象是什么?我在哪里可以了解更多相关信息?

3个回答

59
  • 可以在这里找到关于argparse.Namespace的文档。
  • 通过args.s来访问s属性。
  • 如果您想将其作为字典访问,可以使用vars(args),这意味着您也可以使用vars(args)['s']

argparse.Namespace也可以用于类型提示!即args:argparse.Namespace。你的答案帮助我弄清楚它是一个特定于模块的Namespace类型,而不是全局的。 - colby-ham

3

这是argparse返回的结果对象;所列出的项目是属性:

print(args.s)

这是一个非常简单的对象,故意如此。您解析的参数是此对象上的属性(名称由长选项确定,或者如果设置了,则为dest参数)。

非常感谢您的回答。我在哪里可以了解更多关于这个命名空间对象的信息?它在哪里和如何使用?我在谷歌上找不到什么好的资料。 - Shashank Garg
1
我已经在我的回答中为您提供了文档链接。实际上,关于它并没有太多要说的。 - Martijn Pieters

1
您可以通过args.s访问,"NameSpace类故意简单,只是一个对象子类,具有可读的字符串表示形式。如果您更喜欢以字典样式查看属性,则可以使用标准Python习惯用法vars()。"来源

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接