ホームページ >バックエンド開発 >Python チュートリアル >Python プログラムを python2 と python3 の両方と互換性のあるものにします

Python プログラムを python2 と python3 の両方と互換性のあるものにします

高洛峰
高洛峰オリジナル
2016-10-18 12:00:401888ブラウズ

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 にアップグレードしてください。


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