2017-01-02 61 views
0

假设我有一个程序需要在Py 2和Py 3中运行。功能唯一区别是range vs xrange。是否有可能做这样的事情?根据版本更改Python内置版本

if version == 3: pass 
else: range = xrange 

我知道我以前看过类似的东西,但我似乎无法在Google机器上找到示例。 谢谢你们。

+0

组合使用,如果您想手动执行,请检查'sys.version_info'元组。 Google为'六','python-future'或'nine'设计第三方库来解决这个问题。 –

+1

'如果范围是None:range = xrange' – metmirr

+0

由于编译时间的增加,我最喜欢你的答案。 – aseylys

回答

1

是的,你可以这样做:

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) 
1

您可以使用sys.version_info。这是一个元组持有版本号等等这样的事情应该工作:

import sys 
if sys.version_info[0] < 3: 
    range = xrange 

如果你需要的版本(次设备号)一个更精确的控制,您可以使用major/minor,让第一和第二号版本或简单地sys.version_info[:2]这是一个元组,可以与==, >=,...