Python2 と Python3 の違いは、1. 出力 print の違い、2. 整数の除算と戻り値の違い、3. リスト内包ループ変数、4. Unicode 文字列、5. 処理上のエラーです。 ; 6. xrange が異なるなど。
この記事の動作環境: Windows 7 システム、Dell G3 コンピューター、Python バージョン 3.6.4。
この記事では、誰もが Python のバージョンを理解できるように、Python2 と Python3 の違いを紹介します。一定の参考値があるので、困っている友達は参考にしていただければ幸いです。
Python に詳しくない場合は、利用可能な Python のさまざまなバージョンに混乱する可能性があります。どのバージョンの Python を使用するべきかという質問に対する明確な答えは現時点ではありません。決定は、何を達成したいかによって異なります。
Python 3 は最新世代の言語であり、言語の将来でもありますが、多くのプログラマーは依然として、2010 年にリリースされた Python 2 の最終更新バージョンである Python 2.7 を使用しています。これは、一部の古いライブラリとパッケージが Python 2 でのみ動作するためです。
Python にはなぜさまざまなバージョンがあるのですか?
プログラミング言語は、開発者が言語の機能を拡張し、開発者に問題の原因となる癖を取り除くにつれて進化し続けています。 Python 3 は、Python を使いやすくし、言語の今日の要件に合わせて文字列の処理方法を変更することを目的として 2008 年に導入されました。 Python 2 でのプログラミングが初めてのプログラマーは、新しい変更に適応するのが難しいと感じることがありますが、初心者は言語の新しいバージョンの方が理にかなっていると感じることがよくあります。
Python 3.0 は、古いバージョンと互換性のない初めての Python バージョンであるため、以前の Python バージョンとは根本的に異なります。プログラマは、通常、Python の内部動作を変更するだけであり、プログラマが構文を変更する必要がないため、小さなアップデート (たとえば、2.6 から 2.7 へ) について心配する必要はありません。 Python 2.7 (Python 2 の最終バージョン) と Python 3.0 の間の変更ははるかに重要であるため、Python 2.7 で動作するコードを Python 3.0 で動作させるには別の方法で記述する必要がある可能性があります。
Python 2 と Python 3 の主な違いは何ですか?
1. 出力 --print
Python 2 では、「print」は関数ではなくステートメントとして扱われます。出力するテキストを括弧で囲む必要はありませんが、括弧で囲むことは可能です。 Python の他のほとんどの操作では、引数を括弧内に置く必要がある関数が使用されるため、これは混乱を招く可能性があります。また、出力する項目のカンマ区切りリストをかっこで囲んだ場合にも、予期しない結果が生じる可能性があります。
Python 3 では、「print」は明示的に関数として扱われます。つまり、出力したい項目を標準的な方法で括弧内に入れて関数に渡す必要があります。そうしないと、構文エラーが発生します。一部の Python 2 プログラマーはこの変更を煩わしく感じますが、エラーの発生を防ぐのに役立ちます。
例:
print 'Hello, Geeks' # Python 3.x 不支持 print('Hope You like these facts')
出力:
Python 2.x の出力:
Python 3.x 出力:
#印刷 'Hello, Geeks' は Python 3.x ではサポートされていないため、エラーが発生しました:
##2. 整数の除算:
Python 2 は、小数点以下の数字のない数値を整数として扱うため、除算中に予期しない結果が生じる可能性があります。たとえば、Python 2 コードに式 3/2 を入力すると、予想どおり 1.5 ではなく 1 と評価されます。
これは、Python 2 が除算の結果が整数であることを想定し、計算を最も近い整数に切り捨てるためです。結果 1.5 を取得するには、浮動小数点数を返すように 3.0/2.0 を記述して Python に指示する必要があります。つまり、結果に小数点以下の数値を含めます。
Python 3 はデフォルトで 3/2 を 1.5 として評価します。これは新しいプログラマにとってより直感的です。
3. リスト内包ループ変数:
以前の Python 2.x バージョンでは、リスト内包表記で反復される変数にはグローバル変数と同じ名前が付けられていました。グローバル変数の値が変更されてしまいますが、これは通常は望ましくないことです。
この迷惑なバグは Python 3 で修正されました。したがって、リスト内包表記の制御変数にすでに使用されている変数名を、コードの残りの部分で変数の値が漏れて台無しにすることを心配することなく使用できます。
4. Unicode 文字列:
默认情况下,Python 3是将字符串存储为Unicode,而如果Python 2要将字符串存储为Unicode,则要求使用“u”标记字符串。Unicode字符串比ASCII字符串更通用,它们都是Python 2的默认字符串,因为它们可以存储来自外语的字母以及表情符号和标准的罗马字母和数字。如果要确保Python 3代码与Python 2兼容,你仍然可以使用“u”来标记Unicode字符串。
5、错误处理:
Python 2和Python 3两个版本的错误处理有一个小的变化。
在python 3.x中,'as'关键字是必需的。例:
try: trying_to_check_error except NameError, err: print err, 'Error Caused' # 不能在Python 3中工作
运行:
Python 2.x中输出:
Python 3.x 中运行,报错:
try: trying_to_check_error except NameError as err: # 'as' 是 Python 3.x 必需的存在的关键字 print (err, 'Error Caused')
运行:
Python 2.x中输出:
Python 3中输出:
6、xrange:
Python 3.x中不存在Python 2.x的xrange()。在Python 2.x中,range返回一个列表,即range(3)返回[0,1,2],而xrange返回一个xrange对象,即xrange(3)返回iterator对象,它与Java迭代器类似,并在需要时生成数字。
如果我们需要多次迭代相同的序列,我们更喜欢range(),因为range提供了一个静态列表。xrange()每次重建序列。xrange()不支持切片和其他列表方法。xrange()的优点是,当任务迭代大范围时,它可以节省内存。
在Python 3.x中,范围函数现在执行xrange在Python 2.x中的功能,因此为了保持代码的可移植性,我们可能希望坚持使用范围。所以Python 3.x的范围函数是来自Python 2.x的xrange。
例:
for x in xrange(1, 5): print(x), for x in range(1, 5): print(x),
运行:
Python 2.x中输出:
Python 3中运行,报错:
选择哪种版本归结为你需要的是什么库
Python 2已经存在更长时间,这可能是一个优势,并不是所有可用于Python 2的库都已移植到Python 3.另一方面,一些开发人员正在为Python 3创建可能与Python 2不兼容的库。对于很多人来说,决定使用Python 2还是Python 3取决于他们想要使用哪些库。当然,如果你正在学习Python来处理现有的Python应用程序,那么学会使用编写软件的Python版本是有意义的。
许多人认为Python 3是Python 2的改进版本,因为一些更新消除了程序员常见的错误(参见上面的打印示例)。如上所述,一些更改使Python 3更易于初学者理解。因此,不需要使用任何特定库的新程序员可能会考虑学习Python 3,因为在未来几年可能会逐渐转向新语言,因为Python 2的更新停止并支持旧版本该语言版本减少。用法统计显示使用Python 3的程序员数量已逐渐增加。
除非有明确的理由选择一个版本的Python而不是另一个版本,例如需要处理用Python 2编写的现有代码,否则不值得担心这个决定。大多数语法在每种语言版本中都是相同的。如果你需要从Python 2切换到Python 3,反之亦然,那么熟悉打印语句/函数的更改以及Python处理整数除法的方式之间的差异不应花费太长时间。
总结:以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。
以上がPython2とPython3の違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。