我正在编写一个模块,让我可以在 python 3 中编写代码,但仍然可以在 2 中运行它。实际上它看起来出奇地简单……还有什么我应该补充的吗?从我对交互式解释器的(有限的)抨击来看, future 的导入不会影响 python 3 并且被视为多余的。
# _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 中做(比如字典压缩),并且语言之间有一些陷阱(比如字节码。看起来你永远不应该使用字节)
如有任何意见,我们将不胜感激。
最佳答案
查看 six ,它已经这样做了,并且加载了更多。它还具有帮助您在两个版本中执行二进制和 Unicode 的方法。但是,并非您需要执行的所有技术都可以通过这种方式完成,尤其是当您需要支持 Python 2.5 或更早版本时。我试图涵盖其中的大部分in the book , 但我确定我错过了一些。
关于python _2or3 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5520286/