首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >six.moves.builtins.range在Python2和Python3中不一致。

six.moves.builtins.range在Python2和Python3中不一致。
EN

Stack Overflow用户
提问于 2014-02-28 05:15:01
回答 1查看 9.5K关注 0票数 4

对于非常大的整数范围,应该使用xrange (Python2),在Python3中将其重命名为range。我假设模块six可以提供一个一致的写入原因。

但是我发现six.moves.builtins.range在Python2中返回一个列表,在Python3中返回一个可迭代的非列表对象,就像名称range一样。

而且,Python2中不存在six.moves.builtins.xrange

我在six中使用了错误的函数吗?还是六种方法根本不为rangexrange函数提供解决方案?

我知道我可以测试sys.version[0]并相应地重命名函数。我只是想找个“别重复你自己”的解决方案。

附文

正如姆吉尔森所提到的:

代码语言:javascript
运行
复制
>>> import six 
>>> six.moves.range
AttributeError: '_MovedItems' object has no attribute 'range'

是与six的版本有关,还是没有six.moves.range之类的东西?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-28 05:30:29

我相信你只是想要six.moves.range。不是,six.moves.builtins.range

代码语言:javascript
运行
复制
>>> # tested on python2.x..
>>> import six.moves as sm
>>> sm.range
<type 'xrange'>

这里的原因是six.moves.builtins是与版本无关的“内置”模块。这只会让你访问内置程序--它实际上不会改变任何一个内置程序。

通常,我不认为有必要在这种情况下引入外部依赖。我通常只是在源文件的顶部添加这样的内容:

代码语言:javascript
运行
复制
try:
    xrange
except NameError:  # python3
    xrange = range
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22086804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档