Py 2とPy 3の両方で動作するプログラムがあるとしましょう。機能の唯一の違いはrange
とxrange
です。このようなことは可能でしょうか?バージョンに応じてPythonビルトインを変更する
if version == 3: pass
else: range = xrange
これまで私はこのようなことを知っていましたが、私はGoogleマシンで例を見つけることができません。 ありがとうございます。
Py 2とPy 3の両方で動作するプログラムがあるとしましょう。機能の唯一の違いはrange
とxrange
です。このようなことは可能でしょうか?バージョンに応じてPythonビルトインを変更する
if version == 3: pass
else: range = xrange
これまで私はこのようなことを知っていましたが、私はGoogleマシンで例を見つけることができません。 ありがとうございます。
はい、あなたが何かを行うことができます。
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)
あなたはsys.version_info
を使用することができます。これは、このような何かが動作するはずですので、バージョン番号を保持しているタプルです:
import sys
if sys.version_info[0] < 3:
range = xrange
バージョン(マイナー番号)のためのより正確な制御が必要な場合は、の第一および第二の番号を教えてmajor/minor
を使用できますバージョン、または単にsys.version_info[:2]
と組み合わせて使用できるタプル==, >=,...
手動で行うには、 'sys.version_info'タプルをチェックしてください。この問題を解決するために設計された第三者の図書館の場合は、Googleの「6」、「python-future」、「nine」となります。 –
'もし範囲が無ければ:range = xrange' – metmirr
コンパイル時間の増加のためにあなたの答えが一番好きです。 – aseylys