なぜPython 3は後方互換性がないのですか?[クローズド]です。
2023-10-01 17:12:24
質問
Python3は後方互換性がないことを知りました。
古いバージョンのPythonを使用している多くのアプリケーションに影響を与えないのでしょうか?
Python 3の開発者は、どうして後方互換性を持たせることが絶対に必要だと考えなかったのでしょうか?
どのように解決するのですか?
Python 3.0は後方互換性がありますか、そしてなぜですか?
Python 3.0は非常に便利な機能をたくさん実装していますが、後方互換性を破っています。Python 2.xのコードがPython 3.xで正しく動作しないかもしれないという事実にもかかわらず、素晴らしい機能を実装できるように、意図的にそうしているのです。
つまり、基本的には Python 3.0 は意図的に後方互換性がありません。 . そのおかげで、全く新しい機能のセットを享受することができます。 とまで言われている"。 Python 3000 "または " Python 3K "です。
" から。 Python 3.0 の新機能 "(利用可能 はこちら ):
Python 3.0、2.6と比較して。Python 3.0 は "Python 3000" または "Py3K" とも呼ばれます。 は意図的に後方互換性のない Python の最初のリリースです。 . 通常のリリースよりも多くの変更点があり、すべてのPythonユーザにとって重要な変更点があります。とはいえ、変更点を消化した後では、Python は本当にそれほど変わっていないことがわかるでしょう。 私たちはほとんど、よく知られた厄介事や欠点を修正し、多くの古いゴミを削除しています。 .
Python 3.0の新機能、後方互換性の破壊
後方互換性を壊しながらも、同時に言語を向上させたと考えられる、最も注目すべき機能をいくつか紹介します。
-
print
は現在ではステートメントではなく関数であり、ステートメントとして使用するとエラーになります。 - 様々な関数 & メソッドがリストではなくイテレータまたはビューを返すようになり、結果の反復処理がよりメモリ効率的になりました(メモリ内に結果のリスト全体を保存する必要がありません)。
-
cmp
のようなソート関数の引数はsorted()
とlist.sort()
はサポートされなくなったので、次のように置き換える必要があります。key
引数で指定します。 -
int
は、Python 2.x のlong
と同じになり、数値処理の複雑さが軽減されました。 -
/
演算子はデフォルトで真の除算のための演算子になりました(まだ//
を使うことができます)。 - テキストは、Python 3.x ではデフォルトで Unicode になっています。
-
True
,False
とNone
は予約語になりました(そのためTrue, False = False, True
, - はメタクラスの使用法を変更しました。
-
から派生した例外が必要です。
BaseException
に由来する必要があり、Python 2.x とは異なる方法で raise & catch されなければなりません。 - といった他の多くの変更により、Python はより読みやすく、一貫した & 明示的なものになりました。
関連
-
[解決済み] 関数デコレータを作成し、それらを連鎖させるには?
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] モジュールの関数名(文字列)を使って、モジュールの関数を呼び出す。
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] 最近のPythonでカスタム例外を宣言する適切な方法?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
-
[解決済み] 前月の日時オブジェクトを返す
-
[解決済み] virtualenvsはどこに作成するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PILからopenCVフォーマットへの変換
-
[解決済み] PythonでSVGからPNGに変換する
-
[解決済み] バブルソートの宿題
-
[解決済み] Pythonの要素別タプル演算(sumなど
-
[解決済み] PythonからSMTPを使用してメールを送信する
-
[解決済み] Pythonで0xを使わずにhex()を使うには?
-
[解決済み] スペースがないテキストを単語のリストに分割する方法
-
[解決済み] SQLAlchemy - テーブルのリストを取得する
-
[解決済み] Django 1.7で初期マイグレーションからマイグレートバックする方法は?
-
[解決済み] pycharmがタブをスペースに自動変換する