7

Python 2 と Python 3 の両方で有効にしたいスクリプトを作成しました。

divisionprint_functionfromをインポートした後__future__、私の唯一の懸念は、 myrangeが Python 2 で配列全体を返し、時間とメモリを無駄にすることでした。

回避策として、スクリプトの先頭に次の 3 行を追加しました。

if sys.version_info[0] == 3:
    def xrange(i):
        return range(i)

次に、xrangeコードでのみ使用しました。

私の回避策ではなく、よりエレガントな方法はありますか?

4

1 に答える 1

13

少し単純化できます。

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

私はそれを逆にします:

if sys.version_info[0] == 2:
    range = xrange

Python 2.x のサポートを終了したい場合は、すべてのコードを調べずに、これらの 2 行を削除するだけで済みます。

ただし、sixライブラリを検討することを強くお勧めします。これは、Python 2 および 3 との互換性を有効にするための事実上の標準です。

from six.moves import range
于 2016-06-15T11:49:00.390 に答える