2011-04-02 111 views
3

我正在写一个模块,让我在python 3中编写代码,但仍然在2中运行。它实际上看起来非常容易...我应该添加的其他任何东西?从我的(有限的)交互式口译员的角度来看,未来的进口不会影响python 3,并被视为多余。python _2or3模块?

# _2or3.py 
''' 
Common usage: 

from __future__ import print_function, nested_scopes, division, absolute_import, unicode_literals 
from _2or3 import * 
''' 

import sys 

if sys.version[0] == '2': 
    range = xrange 
    input = raw_input 

显然,有一些事情你不能做,你通常能在3(如字典压缩)做的,也有语言之间的一些陷阱(如字节码。它看起来像你永远不应该使用字节)

任何意见,将不胜感激。

+0

你的意思是“理解”?看起来你不应该尝试处理二进制文件。 – 2011-04-02 01:49:10

+0

这可能是主题,应该是程序员。或者codereview.SE,我想。要么? – 2011-04-02 03:56:57

回答

3

检出six,已经这样做,并加载更多。它也有帮助你在这两个版本中执行二进制和Unicode的方法。但是,并非所有需要做的技术都可以这样完成,特别是如果您需要支持Python 2.5或更早版本。我试图覆盖大部分in the book,但我确定我错过了一些。

+0

谢谢,我查了一下。从模块的外观来看,问题似乎比我预期的要大。例如,我没有意识到python开发者已经移动了标准模块。 – 2011-04-02 19:36:21