如何解决“命名空间”对象不可迭代
尝试使用 argparse 传递不确定数量的整数。当我输入:py main.py 3 2
%%writefile main.py
import sorthelper
import argparse
integers = 0
#top-level parser creation
parser = argparse.ArgumentParser("For sorting integers")
nargs = '+' #-> gathers cmd line arguments into a list
args = parser.add_argument('-f',Metavar='N',type=int,nargs='+',help='yada yada yada')
args = parser.parse_args()
print(sorthelper.sortNumbers(args))
%%writefile sorthelper.py
def sortNumbers(args):
sorted(args)
错误命名空间参数不可迭代
我认为是因为我传递的参数类型不正确。在阅读了所有文档后,我发现我无法弄清楚如何进行这项工作。我希望程序对我传递的数字进行排序。
解决方法
parser.parse_args()
返回 a Namespace
object,它是一个对象,其属性表示已解析的标志。它不可迭代。
似乎您想获得 -f
之后给出的命令行参数,在这种情况下,您将从 Namespace
对象中取出那个特定标志:
print(sorthelper.sortNumbers(args.f))
此外,您当前拥有的代码将打印 None
,因为 sortNumbers()
不返回任何内容。内置的 sorted()
函数不会就地排序(尽管 list.sort()
会,如果你想使用它),所以你必须实际这样做
def sortNumbers(args):
return sorted(args)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。