对于非常大的整数范围,应该使用xrange
(Python 2),在Python 3中将其重命名为range
。我假设模块six
可以提供一致的写作原因。
但是我发现six.moves.builtins.range
在Python 2中返回一个list,在Python 3中返回一个iterable non-list对象,就像range
这个名字一样。
另外,six.moves.builtins.xrange
在Python 2中不存在。
我在six
中使用了错误的函数吗?或者说,six仅仅没有为range
和xrange
函数提供解决方案?
我知道我可以测试sys.version[0]
,并相应地重命名函数。我只是在寻找一个“不要重复你自己”的解决方案。
如mgilson所述:
>>> import six
>>> six.moves.range
AttributeError: '_MovedItems' object has no attribute 'range'
是与six
版本有关,还是没有six.moves.range
这样的东西?
我相信你只是想
six.moves.range
。不是,six.moves.builtins.range
。这里的原因是
six.moves.builtins
是与版本无关的“内置”模块。这只是让您可以访问内置项——实际上它不会改变任何内置项是什么。通常,我觉得在这种情况下不需要引入外部依赖。我通常只是在源文件的顶部添加这样的内容:
相关问题 更多 >
编程相关推荐