Rei*_*ica 11 python python-2.x python-3.x
我的一个课程要求在Python中完成作业,作为练习,我一直在确保我的程序在Python 2和Python 3中都能正常工作,使用如下脚本:
#!/bin/bash
# Run some PyUnit tests
python2 test.py
python3 test.py
Run Code Online (Sandbox Code Playgroud)
我一直在做的一件事是range
使用这段代码在两个版本中使工作相同:
import sys
# Backport Python 3's range to Python 2 so that this program will run
# identically in both versions.
if sys.version_info < (3, 0):
range = xrange
Run Code Online (Sandbox Code Playgroud)
这是一个坏主意吗?
编辑:
这样做的原因是,xrange
与range
工作方式不同在Python 2和Python 3,我希望我的代码做同样的事情在这两个.我可以反过来做,但让Python 3像Python 2一样工作似乎很愚蠢,因为Python 3是"未来".
这是一个为什么只是使用range
不够好的例子:
for i in range(1000000000):
do_something_with(i)
Run Code Online (Sandbox Code Playgroud)
我显然没有使用该列表,但在Python 2中,这将使用疯狂的内存量.
您可以使用提供Python 2和3兼容库的六个软件包,并由一个Python核心开发人员编写.其功能之一是重命名的模块和函数的一组标准定义,包括xrange
- > range
.使用six
是Python文档集中包含的官方移植Python 2代码到Python 3 HOWTO的许多建议之一.
归档时间: |
|
查看次数: |
929 次 |
最近记录: |