ホームページ >バックエンド開発 >Python チュートリアル >Python を Python2 と Python3 の両方と互換性を持たせるための 8 つのヒント

Python を Python2 と Python3 の両方と互換性を持たせるための 8 つのヒント

WBOY
WBOYオリジナル
2016-06-16 08:43:171110ブラウズ

Python メーリング リストの誰かが、「Python3 は 10 年以内に普及しないだろう」とコメントしました。私の意見では、この見方は少し悲観的すぎます。 python3 と python2 には互換性がありませんが、両者の違いは多くの人が考えているほど大きくありません。 python2 と python3 の両方をサポートするには、コードにわずかな変更を加えるだけで済みます。以下に、Python コードを python2 と python3 の両方にサポートさせる方法を簡単に紹介します。

1. Python 2.6 より前のバージョンの Python を放棄します

Python 2.6 より前のバージョンの Python にはいくつかの新機能が欠けているため、移行作業に多大な問題が発生します。必要がない場合は、以前のバージョンのサポートを放棄してください。

2. 2to3 ツールを使用してコードを確認します

2to3 は、Python に付属するコード変換ツールで、Python2 コードを Python3 コードに自動的に変換できます。もちろん、残念ながら、変換されたコードは python2 との互換性に関しては何の役にも立ちません。したがって、2to3 に変換されたコードは実際には使用されません。 2to3 t.py を実行して出力情報を表示し、関連する問題を修正します。

3. python -3 を使用して Python プログラム

を実行します。

2to3 は Python2&3 の互換性に関する多くの問題をチェックできますが、2to3 では見つけられない問題も数多くあります。 -3 パラメーターを追加すると、プログラムは、python2 と python3 に一貫性がなく、2to3 がそれを処理できないことをコンソールに表示します。例えば、python3とpython2では除算処理のルールが変更されています。 -3 パラメーターを指定して 4/2 を実行すると、 DeprecationWarning: classic int Division というプロンプトが表示されます。

4. __future__ インポートから

「from __future__ import」後、Python の将来の機能を使用できるようになります。 Python の完全な将来の機能は __future__ にあります。 Python3 のすべての文字が Unicode になりました。 python2ではunicode文字を定義する際に文字の前にuを付ける必要がありましたが、3ではuは必要なく、uを付けた後はプログラムはコンパイルされません。この問題を解決するには、「将来インポート unicode_literals から」を行うことで、python2 の文字の動作が python3 の動作と一致し、python2 で定義された通常の文字が自動的に Unicode として認識されるようになります。

5. インポートの問題

python3 には多くの python2 パッケージが「欠落」していますが、ほとんどの場合、これらのパッケージの名前は変更されたばかりです。こういったお悩みも輸入時に対応させていただきます。

コードをコピー コードは次のとおりです:
try:#python2
UserDict から UserDict をインポート
#python3の名前に従ってインポートすることをお勧めします
UserDict から MutableMapping
として DictMixin をインポート ImportError:#python3
を除く コレクションから UserDict をインポート
コレクションから MutableMapping をインポート

6. Python3 を使用してプログラムを作成します

python2ではprintはキーワードですが、python3ではprintは関数になります。実は、print関数はpython2.6にすでに組み込まれているので、printの場合は2to3で紹介されているTipsに従って、新しい書き方に変更するだけで済みます。 python3 の例外処理にいくつかの変更が加えられています。これは print に似ており、2to3 のプロンプトに従って直接変更できます。

7. 現在実行中の Python のバージョンを確認します

場合によっては、python2 と python3 に異なるコードを記述する必要がある場合があります。次のコードを使用して、現在のシステムの Python バージョンを確認できます。

コードをコピー コードは次のとおりです:
import sys
sys.version > '3':
PY3 = 真
それ以外:
PY3 = 偽

8、6

six は、Python 2 と Python 3 の違いをカプセル化するための簡単なツールをいくつか提供します。 6 つを使用することはあまりお勧めしません。 Python2.6 より前のバージョンの Python をサポートする必要がない場合は、6 つでなくても互換性の問題に対処するのが簡単です。 6 つを使用すると、コードは python3 よりも python2 に近くなります。
python3 の人気には、すべての pythoner のプロモーションが必要です。おそらく、すぐに python3 にアップグレードすることはできませんが、今すぐ python3 互換のコードを書き始めて、条件が整ったら python3 にアップグレードしてください。

注: python2 と python3 の違い

python2 から python3 への移行に関連する問題をより包括的に理解している場合は、無料の Python 書籍である『Python 3 への移植』を読むことをお勧めします。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。