根据版本更改Python内置

时间:2017-01-02 13:31:52

标签: python python-2.7 python-3.x

假设我有一个程序需要在Py 2和Py 3中运行。功能的唯一区别是range vs xrange。有可能做这样的事吗?

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

我知道我之前看过这样的事情,但我似乎无法在Google机器上找到一个例子。 多谢你们。

2 个答案:

答案 0 :(得分: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 :(得分:1)

您可以使用sys.version_info。这是一个包含版本号的元组,所以这样的东西应该可以工作:

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

如果您需要对版本(次要编号)进行更精确的控制,您可以使用major/minor来提供版本的第一个和第二个编号,或者只使用sys.version_info[:2]这个元组可以与==, >=,...

结合使用