ホームページ >バックエンド開発 >Python チュートリアル >Python プログラムを python2 と python3 の両方と互換性のあるものにします
python2 と python3 の両方をサポートするには、コードにわずかな変更を加えるだけで済みます。以下に、Python コードを python2 と python3 の両方にサポートさせる方法を簡単に紹介します。
Python 2.6 より前のバージョンの Python は放棄してください
Python 2.6 より前のバージョンの Python にはいくつかの新機能が欠けており、移行作業に多大な問題をもたらします。必要がない場合は、以前のバージョンのサポートを放棄してください。
2to3ツールを使用してコードを確認してください
2to3は、Pythonに付属するコード変換ツールで、Python2のコードをPython3のコードに自動的に変換できます。もちろん、残念ながら、変換されたコードは python2 との互換性のための処理を行っていません。したがって、2to3 に変換されたコードは実際には使用されません。 2to3 t.py を実行して出力情報を表示し、関連する問題を修正します。
Pythonプログラムを実行するにはpython -3を使用してください
2to3は多くのPython2と3の互換性の問題をチェックできますが、2to3が見つけられない問題もたくさんあります。 -3 パラメーターを追加すると、プログラムは、python2 と python3 に一貫性がなく、2to3 がそれを処理できないことをコンソールに表示します。例えば、python3とpython2では除算処理のルールが変更されています。 -3 パラメーターを指定して 4/2 を実行すると、 DeprecationWarning: classic int Division というプロンプトが表示されます。
from __future__ import
「from __future__ import」を使用すると、Pythonの将来の機能を使用できます。 Python の完全な将来の機能は __future__ にあります。 Python3 のすべての文字が Unicode になりました。 python2ではunicode文字を定義する際に文字の前にuを付ける必要がありましたが、3ではuは必要なく、uを付けた後はプログラムはコンパイルされません。この問題を解決するには、「将来インポート unicode_literals から」を行うことで、python2 の文字の動作が python3 の動作と一致し、python2 で定義された通常の文字が自動的に Unicode として認識されるようになります。
インポートの問題
python3 には多くの python2 パッケージが「欠落」しています。ほとんどの場合、これらのパッケージの名前は変更されたばかりです。こういったお悩みも輸入時に対応させていただきます。
try:#python2
from UserDict import UserDict
#python3の名前に従ってインポートすることをお勧めします
from UserDict import DictMixin as MutableMapping
例外ImportError: #python3
from collections import UserDict
from collections import MutableMapping
プログラムを書くにはpython3を使ってみましょう
python2ではprintがキーワードでしたが、python3ではprintが関数になります。実は、print関数はpython2.6にすでに組み込まれているので、printの場合は2to3で紹介されているTipsに従って、新しい書き方に変更するだけで済みます。 python3 の例外処理にいくつかの変更が加えられています。これは print に似ており、2to3 のプロンプトに従って直接変更できます。
現在実行中の Python バージョンを確認します
場合によっては、python2 と python3 に異なるコードを記述する必要がある場合があります。次のコードを使用して、現在のシステムの Python バージョンを確認できます。
import sys
if sys.version > '3':
PY3 = True
else:
PY3 = False
six
six は、Python 2 と Python 3 の違いをパッケージ化するための簡単なツールをいくつか提供します。 6 つを使用することはあまりお勧めしません。 Python2.6 より前のバージョンの Python をサポートする必要がない場合は、6 つでなくても互換性の問題に対処するのが簡単です。 6 つを使用すると、コードは python3 よりも python2 に近くなります。
python3 の人気には、すべての pythoner のプロモーションが必要です。おそらく、すぐに python3 にアップグレードすることはできませんが、今すぐ python3 と互換性のあるコードを書き始めて、条件が整ったら python3 にアップグレードしてください。