假設我有一個程序需要在Py 2和Py 3中運行。功能唯一區別是range
vs xrange
。是否有可能做這樣的事情?根據版本更改Python內置版本
if version == 3: pass
else: range = xrange
我知道我以前看過類似的東西,但我似乎無法在Google機器上找到示例。 謝謝你們。
假設我有一個程序需要在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