web-dev-qa-db-ja.com

Python 3は後方互換性がないのはなぜですか?

Python 3は後方互換性がないことを学びました。

古いバージョンのPythonを使用している多くのアプリケーションには影響しませんか?

Python 3の開発者は、下位互換性を確保することが絶対に必要だとは思わなかったのですか?

64
neelmeg

Python 3.0下位互換性とその理由は?

Python 3.0は多くの非常に便利な機能を実装し、後方互換性を破壊します。意図的にそれを行うため、Python 2.xコードはPython 3.xの下では正しく動作しない可能性がありますが、.

そのため、基本的に、Python 3.0は意図的に下位互換性がありませんそのおかげで、まったく新しい機能セットの恩恵を受けることができます。Python 3000」または「Python 3K」。

新機能Python 3.0)」(利用可能 ここ ):

2.6と比較したPython 3.0。 Python 3.0、「Python 3000」または「Py3K」としても知られる、は、これまでに意図的に後方互換性のない初めてのPython release。通常のリリースよりも多くの変更があり、すべてのPythonユーザーに重要です。それにもかかわらず、変更を消化した後、 Pythonはそれほどそれほど変わっていません-概して、よく知られている迷惑といぼを修正し、多くを削除しています古いクラフト

Pythonの3.0の新機能、後方互換性の破壊

下位互換性を破壊すると同時に言語を改善すると考えられる最も注目すべき機能のいくつかは次のとおりです。

  • printはステートメントではなく関数になりました。ステートメントとして使用するとエラーになります。
  • さまざまな関数とメソッドがリストの代わりにイテレータまたはビューを返すようになりました。これにより、結果の反復処理がよりメモリ効率になります(結果のリスト全体をメモリに保存する必要がなくなります)。
  • sorted()list.sort()などのソート関数のcmp引数はサポートされなくなったため、key引数に置き換える必要があります。
  • intは、Python 2.xのlongと同じです。
  • /演算子は、デフォルトで真の除算の演算子になりました(フロア除算には//を引き続き使用できます)。
  • Python 3.xのテキストはデフォルトでUnicodeになりましたが、
  • TrueFalse、およびNoneは予約語になりました(したがって、True, False = False, Trueを実行することはできません。
  • メタクラスの使用法を変更し、
  • 例外はBaseExceptionから派生する必要があり、Python 2.x、
  • さらに多くの変更を加え、Pythonを読みやすく、一貫性と明示性を高め、
58
Tadeck