Python2とPython3の違いを解説!コードの書き方から機能まで

Python2とPython3の概要と歴史

Pythonは、Guido van Rossum氏によって1991年に開発されたプログラミング言語です。Python2は2000年にリリースされ、Python3は2008年にリリースされました。Python3は、Python2の後継バージョンとして開発され、言語仕様の改善や機能の追加がされました。

構文とコードの書き方の違い

Python2とPython3の構文にはいくつかの違いがあります。具体的には、print文、整数の除算、Unicode文字列などが挙げられます。以下にその詳細を示します。

Print文

Python2では、print文は以下のように書かれます。

print "Hello, World!"

一方、Python3では、print文は以下のように書かれます。

print("Hello, World!")

Python3のprint文では、引数を丸括弧で囲む必要があります。

整数の除算

Python2では、2つの整数を割り算すると、整数の結果が返されます。

print 7 / 2 # 結果は3

一方、Python3では、2つの整数を割り算すると、少数の結果が返されます。

print(7 / 2) # 結果は3.5

Python3では、//演算子を使用することで、整数の除算を行うことができます。

print(7 // 2) # 結果は3

Unicode文字列

Python2では、文字列は通常の文字列とUnicode文字列の2種類があります。

s = u"こんにちは、世界!"

一方、Python3では、文字列は全てUnicode文字列として扱われます。

s = "こんにちは、世界!"

文字列処理の違い

Python2とPython3では、文字列処理においてもいくつかの違いがあります。以下にその詳細を示します。

文字列のエンコードとデコード

Python2では、文字列のエンコードとデコードには、str型とunicode型があります。

s = "こんにちは、世界!"
s_utf8 = s.encode("utf-8") # utf-8にエンコード
s_unicode = s_utf8.decode("utf-8") # utf-8からデコード

一方、Python3では、文字列のエンコードとデコードには、bytes型とstr型があります。

s = "こんにちは、世界!"
s_bytes = s.encode("utf-8") # utf-8にエンコード
s_str = s_bytes.decode("utf-8") # utf-8からデコード

Python3では、bytes型とstr型が明確に分かれており、明示的に変換する必要があります。

文字列の比較

Python2では、文字列の比較には、cmp関数があります。

print cmp("abc", "def") # -1

一方、Python3では、cmp関数は削除され、代わりに演算子を使用します。

print("abc" < "def") # True

エラーハンドリングの違い

Python2とPython3では、エラーハンドリングにおいてもいくつかの違いがあります。以下にその詳細を示します。

例外の書き方

Python2では、例外を書く際には以下のように書かれます。

try:
    # 何かしらの処理
except Exception, e:
    # 例外が発生した場合の処理

一方、Python3では、以下のように書かれます。

try:
    # 何かしらの処理
except Exception as e:
    # 例外が発生した場合の処理

Python3では、asキーワードを使用して例外オブジェクトを変数に代入します。

例外の継承

Python2では、例外を継承する際には以下のように書かれます。

class MyException(Exception):
    pass

一方、Python3では、以下のように書かれます。

class MyException(Exception):
    pass

Python3では、例外を継承する場合には、objectを省略することができます。

標準ライブラリの違い

Python2とPython3では、標準ライブラリにもいくつかの違いがあります。以下にその詳細を示します。

urllibとurllib2の統合

Python2では、urllibとurllib2が別々のモジュールとして存在していました。

import urllib
import urllib2

一方、Python3では、urllibとurllib2が統合され、urllibに統合されました。

import urllib.request

Python2とPython3のどちらを使うべきか?

Python2とPython3のどちらを使うべきかは、使用するライブラリやプロジェクトによって異なります。ただし、Python3は、Python2よりも改善された言語仕様や機能が追加されているため、新しいプロジェクトにはPython3を使用することをおすすめします。

まとめ

Python2とPython3には、構文やコードの書き方、文字列処理、エラーハンドリング、標準ライブラリなど、いくつかの違いがあります。プロジェクトに応じて、適切なバージョンを選択することが重要です。