2017-01-02 7 views
0

Py 2とPy 3の両方で動作するプログラムがあるとしましょう。機能の唯一の違いはrangexrangeです。このようなことは可能でしょうか?バージョンに応じてPythonビルトインを変更する

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

これまで私はこのようなことを知っていましたが、私はGoogleマシンで例を見つけることができません。 ありがとうございます。

+0

手動で行うには、 'sys.version_info'タプルをチェックしてください。この問題を解決するために設計された第三者の図書館の場合は、Googleの「6」、「python-future」、「nine」となります。 –

+1

'もし範囲が無ければ:range = xrange' – metmirr

+0

コンパイル時間の増加のためにあなたの答えが一番好きです。 – aseylys

答えて

1

はい、あなたが何かを行うことができます。

import sys 
if sys.version_info.major > 2: 
    xrange = range 

を別のアプローチは、try/catchブロックでxrange文をラップするようになります:

>>> 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]と組み合わせて使用​​できるタプル==, >=,...

関連する問題