2017-01-02 22 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]這是一個元組,可以與==, >=,...