現在、Pythonは二つのバージョン、1つのバージョン2.xを持っている、バージョン3.xで、2つのバージョンが互換性がありません。3.xのは、下位互換性2.xのコードを考慮していません。一方で、ほとんどの企業は、バージョン2.7の現在の開発に基づいていますが、バージョン3.xは、ますます人気になるだろう。
3.xでは、組み込み関数やオブジェクトの振る舞いいくつかの文法は、調整されます。ほとんどのPythonライブラリを選択することができ、バージョンに関係なくので、Python2.xおよび3.xの両方のバージョンをサポートしています。パイソンを使用するためには、いくつかの一般的な落とし穴のバージョンを避けるためである、または移植されたときにPythonプロジェクトを必要とする、まだPythonの2つのバージョンの主な違いを見ることが必要です。
次のように2つのバージョン間の主な違い:
1.モジュール__future__
Python3.xキーワードが導入されていて、それがPython2.xの特性と互換性がありません。Python2内蔵モジュールにおいて、新たなコンテンツの__future__に導入することができます。あなたはPython2環境でコードを書きたい場合ものpython3で実行することができ、その後、__future__モジュールをお勧めします。
2.印刷機能
印刷構文は非常に小さい変化のpython3ですが、知っていたはずですが、まだ言及する価値が:Python2 print文はあなたが必要なのpython3で囲む必要があります手段印刷のpython3()関数に置き換えられますオブジェクトの出力を同封します。Python2もできますが、あなたは括弧なしでPython2プリント関数呼び出しの形でのpython3する場合は、それがでSyntaxError(構文エラー)をトリガーする追加の括弧の使用
3.整数除算
人々はしばしばのpython3は(間違ったのでSyntaxErrorをトリガしません)整数の除算の変化、およびコードまたはでPython2中のpython3のコードの実行を移植するとき、したがって、この変更に特別な注意を必要と見落とすので。
4.ユニコード
そこPython2 strのASCIIベースの()タイプ、()関数は、別々のユニコードユニコードの種類、ないbyte型に変換されます。python3のUnicode(UTF-8)文字列とその二つのクラス(バイトByteArrayとして定義)を持ちます。
5.はxrange
通常の「forループ」または「リスト/コレクション/辞書導出」に表示されていることをイテレータオブジェクトを作成するPython2.xには、頻繁に使用はxrange()。(のpython3では、レンジ()実装とはxrange()関数は同じであるため、専用のはxrangeの非存在下)(のpython3において使用はxrange()はNameErrorをトリガします)。
異常6.トリガー
Pythonの2構文は異常新旧両方のトリガをサポートしており、括弧3つの文法(またはにSyntaxErrorがトリガーされます)でのPythonサポート。
7.例外処理
Pythonの3例外処理はほとんど変化しました。Pythonの3のキーワードとして使用されている必要があり、Pythonの2で必要とされていません。
8.次の()関数と.next()メソッド
(次に())が頻繁に別の構文の変更(実現も行われた変更)に言及するように、次の()関数(メソッド)ために使用されますでのPython 2を形成する方法の形態及び機能を使用することができます。 Pythonの3で、あなただけの次の()関数を使用することができます(()メソッドはAttributeErrorががトリガーされます.next呼び出そうとします)。
ループ変数とグローバルな名前空間のリーク9.
Pythonの3.xでは、ループ変数は、もはやグローバル名前空間に漏れていないため。
10.比較順不同タイプ
もう一つの優れたPythonの3の変更は、私たちは、障害の種類を比較しようとした場合、TypeError例外を引き起こしたということです。
11.入力()入力内容を解析
Pythonの3の改善入力()関数は、この関数は常にオブジェクトのSTRとして格納され、ユーザの入力になります。Pythonの2では、非危険な行動は、文字列型を発生する(raw_inputを使用していた読みを避けるために)の代わりに、入力の()。
12.戻りイテラブルではなく、リスト
Pythonの3のいくつかの関数やメソッドは、イテレータオブジェクトが返さなく、Pythonの2にリストされて返されます。発電機によるこれらのオブジェクトの複数の反復が、効率が高くない場合、オブジェクトのトラバーサルは一度だけ、大量のメモリを節約します。この時点で、必要であれば、単にイテレート可能オブジェクトリスト()関数はPython 3によるオブジェクトのリストは、リストに変換されます。