根据版本更改Python内置版本
问题描述:
假设我有一个程序需要在Py 2和Py 3中运行。功能唯一区别是range
vs xrange
。是否有可能做这样的事情?根据版本更改Python内置版本
if version == 3: pass
else: range = xrange
我知道我以前看过类似的东西,但我似乎无法在Google机器上找到示例。 谢谢你们。
答
是的,你可以这样做:
import sys
if sys.version_info.major > 2:
xrange = range
另一种方法是来包装xrange
声明在try/catch块:
>>> try:
... r = xrange(10)
... except NameError:
... # No xrange in Python3
... r = range(10)
答
您可以使用sys.version_info
。这是一个元组持有版本号等等这样的事情应该工作:
import sys
if sys.version_info[0] < 3:
range = xrange
如果你需要的版本(次设备号)一个更精确的控制,您可以使用major/minor
,让第一和第二号版本或简单地sys.version_info[:2]
这是一个元组,可以与==, >=,...
组合使用,如果您想手动执行,请检查'sys.version_info'元组。 Google为'六','python-future'或'nine'设计第三方库来解决这个问题。 –
'如果范围是None:range = xrange' – metmirr
由于编译时间的增加,我最喜欢你的答案。 – aseylys