0

Python3 に Python2 と互換性のないコマンドがある理由がわかりません。

たとえば、コマンド

「こんにちは」を印刷

Python3 ではなく Python2 で動作します。なんで?

たとえば、C#4 が C#2 と互換性があるのと同じように、Python3 は Python2 と互換性があると思います。

4

3 に答える 3

8

Python3 に Python2 と互換性のないコマンドがある理由がわかりません。

Python 3 は Python 2 と同じ言語ではないためです。

Python のリリースは、通常、以前のバージョンとほとんど下位互換性があります。Python 2.7 は、Python 2.6 と大部分の下位互換性があります。

ただし、最初から、Python 3 (またはその設計プロジェクトの最初のコードネームである 3000) は明確に異なっていました。設計文書の 1つからの引用:

Python 3000 では、主に言語を合理化し、以前の設計ミスを取り除くために、Python に後方互換性のない変更が多数導入されます。)

そのため、Python 3 は下位互換性がなく、下位互換性のある変更で修正できなかった言語の特定のエラーを修正できません。

stdout関数の代わりにステートメントを使用して書き込むことは、それらの変更の 1 つです。print関数に置き換えられましたprint()

言語やソフトウェアのプロジェクトが異なれば、バージョン番号の意味について異なる基準が使用されます。Python は、メジャー - マイナー - ミクロ スキームに固執します。同じメジャー番号内のリリースは大部分が下位互換性があり、同じマイナー番号内のリリースにはバグ修正のみが含まれています。Python バージョン番号 FAQを参照してください。

Python のバージョンには、A.B.CまたはA.B. Aはメジャー バージョン番号です。言語の本当に大きな変更に対してのみ増分されます。Bマイナー バージョン番号であり、重大な変更が少ない場合に増分されます。Cはマイクロレベルで、バグ修正のリリースごとに増加します。バグ修正リリースの詳細については、PEP 6を参照してください。

また、Python は C# よりもかなり古いです。Python の開発は 1989 年に始まり、バージョン 2.0 が 2000 年に登場しました。一方、C# は 2002 年に登場したばかりです。おそらく、あと 10 年ほどで、後方互換性のない変更が行われることになるでしょう。

于 2013-09-23T06:52:01.510 に答える
3

Python 2 では、printがステートメントであるためです。しかしprint()、Python 3 の関数になりました。ただし、print(...)Python 2 でも有効な構文であり、from __future__ import print_functionPython 3 の print 関数を Python 2 で取得することもできます。

Python 3 が 2 と互換性があるとは思わないでください。他にも多くの変更があります。たとえば、reduce()が削除され、ほとんどの組み込み関数は、以前はリストを返していたジェネレータを返すようになりました (例: map()zip()、およびfilter())。

于 2013-09-23T06:40:30.407 に答える