###はじめに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つの間の互換性をある程度提供することでした。 この互換性サポートには、バージョン2.7の拡張モジュールが含まれています。 unittest テスト自動化をサポートするには、 argparse コマンドラインオプションの解析、および collections.

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

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

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

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

###Python2で印刷 print Pythonの他の多くのアクションでは、実行するために括弧内の引数が必要になるため、これは関数ではなくステートメントとして扱われます。これは、典型的な混乱の領域でした。 コンソールを印刷したい場合 Sammy the Shark is my favorite sea creature Python 2では、次の方法でこれを行うことができます 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 3 print() 関数はどちらのバージョンでも実行できます。

###整数による除算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へのサポートは少なくなることを覚えておくことが重要です。