Fro*_*ame 3 python portability
对于一个非常大的整数范围,xrange应该使用(Python 2),它range在Python 3中重命名.我假设模块six可以提供一致的写作原因.
但我发现six.moves.builtins.range在Python 2中返回一个列表,在Python 3中返回一个可迭代的非列表对象,就像名字range一样.
此外,six.moves.builtins.xrangePython 2中不存在.
我使用了错误的功能six吗?或者六个根本没有提供range和xrange功能的解决方案?
我知道我可以相应地测试sys.version[0]和重命名该功能.我只是在寻找"不要重复自己"的解决方案.
如mgilson所述:
>>> import six
>>> six.moves.range
AttributeError: '_MovedItems' object has no attribute 'range'
Run Code Online (Sandbox Code Playgroud)
它是与版本相关的东西six,还是没有这样的东西six.moves.range?
mgi*_*son 10
我相信你只是想要six.moves.range.不,six.moves.builtins.range.
>>> # tested on python2.x..
>>> import six.moves as sm
>>> sm.range
<type 'xrange'>
Run Code Online (Sandbox Code Playgroud)
这里的原因是six.moves.builtins版本不可知的"内置"模块.这只是给你访问建宏-它实际上并没有改变什么任何建宏是.
通常,我觉得不需要在这种情况下引入外部依赖.我通常只是在我的源文件的顶部添加这样的东西:
try:
xrange
except NameError: # python3
xrange = range
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5708 次 |
| 最近记录: |