###はじめにPythonは、非常に読みやすく、用途の広いプログラミング言語です。 英国のお笑いグループであるモンティパイソンにちなんで名付けられたこの言語を楽しく使用できるようにすることは、Python開発チームの重要な基本目標でした。 セットアップが簡単で、エラーに関するフィードバックがすぐに得られる比較的簡単なスタイルで記述されているPythonは、初心者に最適です。

Pythonはマルチパラダイム言語であるため、つまり、スクリプトやオブジェクト指向を含む複数のプログラミングスタイルをサポートしているため、汎用的な使用に適しています。 ユナイテッドスペースアライアンス(NASAの主要なシャトルサポート請負業者)やインダストリアルライト&マジック(ルーカスフィルムのVFXおよびアニメーションスタジオ)などの組織によって業界でますます使用されているPythonは、追加のプログラミング言語を習得しようとしている人に多くの可能性を提供します。

1980年代後半に開発され、1991年に最初に公開されたPythonは、コミュニティで非常に活発に活動しているGuidovanRossumによって作成されました。 ABCプログラミング言語の後継として考案されたPythonの最初の反復には、例外処理、関数、および継承を持つクラスがすでに含まれていました。 1994年にcomp.lang.pythonと呼ばれる重要なUsenetニュースグループディスカッションフォーラムが結成されたとき、Pythonのユーザーベースは拡大し、Pythonがオープンソース開発で最も人気のあるプログラミング言語の1つになる道を開きました。

##一般的な概要Python2とPython3に関連する潜在的な機会、およびPython2とPython3の主なプログラム上の違いを調べる前に、Pythonの最近のメジャーリリースの背景を見てみましょう。

### Python 22000年後半に公開されたPython2は、Pythonコミュニティメンバーに情報を提供するか説明する技術仕様であるPEP(Python Enhancement Proposal)を実装することで、以前のバージョンのPythonよりも透過的で包括的な言語開発プロセスを示しました。言語の新機能。

さらに、Python 2には、メモリ管理を自動化するサイクル検出ガベージコレクター、文字を標準化するUnicodeサポートの強化、既存のリストに基づいてリストを作成するリスト内包表記など、さらに多くのプログラム機能が含まれていました。 Python 2の開発が進むにつれて、Pythonバージョン2.2でPythonのタイプとクラスを1つの階層に統合するなど、より多くの機能が追加されました。

### Python 3 Python 3はPythonの未来と見なされており、現在開発中の言語のバージョンです。 大幅な見直しであるPython3は、以前のバージョンの言語に固有の設計上の欠陥に対処して修正するために、2008年後半にリリースされました。 Python 3開発の焦点は、コードベースをクリーンアップして冗長性を排除し、特定のタスクを実行する方法が1つしかないことを明確にすることでした。

Python 3.0の主な変更点には、printステートメントの組み込み関数への変更、整数の分割方法の改善、Unicodeサポートの強化などがあります。

当初、Python3はPython2との下位互換性がないため、徐々に採用されました。使用する言語のバージョンを決定する必要がありました。 さらに、多くのパッケージライブラリはPython 2でのみ利用可能でしたが、Python 3の背後にある開発チームが、Python 2サポートのサポートが終了することを繰り返したため、より多くのライブラリがPython3に移植されました。 Python 3の採用が増えていることは、Python 3をサポートするようになったPythonパッケージの数によって示されます。これを書いている時点では、最も人気のある360のPythonパッケージのうち339が含まれています。

### Python 2.7 Python 3.0の2008リリースに続いて、Python 2.7は2010年7月3日に公開され、2.xリリースの最後として計画されました。 Python 2.7の背後にある意図は、Python2.xユーザーがPython3に機能を移植しやすくすることで、2つの間にある程度の互換性を提供することでした。 この互換性サポートには、テスト自動化をサポートするunittest、コマンドラインオプションを解析するためのargparsecollectionsのより便利なクラスなどのバージョン2.7の拡張モジュールが含まれていました。

Python2.7はPython2とPython3.0の初期のイテレーションの間のバージョンとして独自の位置を占めているため、多くの堅牢なライブラリとの互換性があるため、プログラマーにとって非常に人気のある選択肢として存続しています。 今日Python2について話すとき、最も頻繁に使用されるバージョンとして、通常Python2.7リリースを指します。

ただし、Python 2.7はレガシー言語と見なされており、現在ほとんどがバグ修正で構成されているその継続的な開発は、2020年に完全に終了します。

##主な違いPython2.7とPython3は多くの類似した機能を共有していますが、完全に互換性があると考えるべきではありません。 どちらのバージョンでも優れたコードと便利なプログラムを作成できますが、コードの構文と処理にはかなりの違いがあることを理解する価値があります。

以下にいくつかの例を示しますが、Pythonを学び続けると、構文上の違いが増える可能性があることに注意してください。

###印刷Python2では、printは関数ではなくステートメントとして扱われます。これは、Pythonの他の多くのアクションでは、実行するために括弧内の引数が必要なため、一般的な混乱の領域でした。 コンソールでPython2でSammy the Shark is my favorite sea creatureを印刷する場合は、次のprintステートメントを使用して印刷できます。

print "Sammy the Shark is my favorite sea creature"

Python 3では、print()が明示的に関数として扱われるようになったため、上記の同じ文字列を出力するには、関数の構文を使用して簡単に実行できます。

print("Sammy the Shark is my favorite sea creature")

この変更により、Pythonの構文の一貫性が高まり、異なる印刷関数間での変更も容易になりました。 便利なことに、print()構文はPython2.7とも下位互換性があるため、Python 3print()関数はどちらのバージョンでも実行できます。

###整数による除算Python2では、小数点なしで入力する数値は、integerと呼ばれるプログラミング型として扱われます。 一見、これはプログラミングタイプを処理する簡単な方法のように見えますが、整数を分割しようとすると、次のように小数点以下の桁数( float と呼ばれる)で答えが得られることがあります。

5 / 2 = 2.5

ただし、Python 2では、整数は強く型付けされており、直感的に理解できる場合でも、小数点以下の桁数の浮動小数点数に変更されませんでした。

除算/シンボルの両側にある2つの数値が整数の場合、Python 2は床除算を実行するため、商xに対して返される数値は以下の最大の整数になります。 x以上。 つまり、5 / 2を記述して2つの数値を除算すると、Python 2.7は2.5以下の最大の整数(この場合は2)を返します。

a = 5 / 2
print a
Output
2

これをオーバーライドするには、5.0 / 2.0のように小数点以下の桁数を追加して、期待される答え2.5を取得できます。

Python 3では、整数除算は、次のように、より直感的になりました。

a = 5 / 2
print(a)
Output
2.5

5.0 / 2.0を使用して2.5を返すことはできますが、フロア分割を行う場合は、次のように//のPython3構文を使用する必要があります。

b = 5 // 2
print(b)
Output
2

Python 3でのこの変更により、整数による除算がはるかに直感的になり、Python2.7との下位互換性がない機能です。

### Unicodeのサポートプログラミング言語が文字列タイプ、つまり文字のシーケンスを処理する場合、コンピューターが数値を文字やその他の記号に変換できるように、いくつかの異なる方法で処理できます。

Python 2はデフォルトでASCIIアルファベットを使用するため、"Hello, Sammy!"と入力すると、Python2は文字列をASCIIとして処理します。 ASCIIは、さまざまな拡張形式でせいぜい数百文字に制限されているため、文字、特に英語以外の文字をエンコードするための非常に柔軟な方法ではありません。

現代的および歴史的なスクリプトと記号セット全体で128,000文字以上をサポートする、より用途が広く堅牢なUnicode文字エンコードを使用するには、u"Hello, Sammy!"と入力する必要があり、uプレフィックスはUnicodeを表します。

Python 3はデフォルトでUnicodeを使用するため、プログラマーは余分な開発時間を節約でき、プログラムに直接入力してさらに多くの文字を簡単に表示できます。 Unicodeは、より優れた言語文字の多様性と絵文字の表示をサポートしているため、Unicodeをデフォルトの文字エンコードとして使用すると、世界中のモバイルデバイスが開発プロジェクトで容易にサポートされるようになります。

ただし、Python3コードをPython2と下位互換性を持たせたい場合は、文字列の前にuを保持できます。

###継続的な開発Python3とPython2の最大の違いは構文上の違いではありませんが、Python 2.7が2020年に継続的なサポートを失い、Python3がより多くの機能とバグ修正を加えて開発され続けるという事実です。

最近の開発には、フォーマットされた文字列リテラルクラス作成のより簡単なカスタマイズ、および行列乗算を処理するためのよりクリーンな構文方法が含まれています。

Python 3の継続的な開発は、開発者が問題をタイムリーに修正することに依存できることを意味し、プログラムは、時間の経過とともに組み込まれる機能の増加により、より効果的になる可能性があります。

##考慮すべき追加のポイントPythonを新しいプログラマーとして始めた人、またはPython言語に不慣れな経験豊富なプログラマーとして、言語の学習で何を達成したいのかを検討する必要があります。

設定されたプロジェクトを念頭に置いて学習することだけを望んでいる場合は、Python 3は引き続きサポートおよび開発されますが、Python2.7はサポートされないことを考慮に入れる必要があります。

ただし、既存のプロジェクトに参加することを計画している場合は、プロジェクトで使用されているパッケージがサポートされている場合、チームが使用しているPythonのバージョン、別のバージョンがレガシーコードベースとどのように相互作用するかを確認する必要があります。異なるバージョン、およびプロジェクトの実装の詳細は何ですか。

念頭に置いているプロジェクトを開始する場合は、使用できるパッケージと、それらが互換性のあるPythonのバージョンを調査することをお勧めします。 上記のように、以前のバージョンのPython3はPython2のバージョン用に構築されたライブラリとの互換性が低くなりましたが、多くはPython 3に移植されたか、今後4年間で移植することを約束しています。

##結論Pythonは、学習するための用途が広く、十分に文書化されたプログラミング言語であり、Python2またはPython3のどちらを使用する場合でも、エキサイティングなソフトウェアプロジェクトに取り組むことができます。

重要な違いはいくつかありますが、いくつかの調整を加えるだけでPython3からPython2に移行することはそれほど難しくありません。また、特に始めたばかりの場合、Python2.7でPython3コードを簡単に実行できることがよくあります。 このプロセスの詳細については、チュートリアルPython2コードをPython3に移植する方法をお読みください。

開発者やコミュニティの注目がPython3に集中するにつれて、言語はより洗練され、プログラマーの進化するニーズに沿ったものになり、Python2.7へのサポートは少なくなることを覚えておくことが重要です。