Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python 2.xとPython 3.xの重要な違いを具体例つきで徹底解説

この記事では、Python 2.xとPython 3.xの間に存在する主要な変更点について、具体的なコード例とともにわかりやすく解説します。Python 2はすでにサポートが終了しているため、両者の違いを理解することは、古いコードベースの移行や保守を行う上でも非常に重要です。

本記事で取り上げる主なトピックは以下の4つです。

  • 入力方法(Input)
  • 出力方法(Output)
  • 除算演算子(Division Operator)
  • 例外処理(Exception Handling)

1. 入力方法の違い

Python 2.xではユーザーからの入力を受け付ける際に raw_input() メソッドを使用していましたが、Python 3.xではこれが廃止され、代わりに input() メソッドが標準となりました。以下のように、整数の入力を受け取るコードはバージョンによって書き方が異なります。

# Python 2.x の場合
a = int(raw_input())

# Python 3.x の場合
a = int(input())

なお、Python 2.xの input() は入力を自動的に評価する挙動を持っていたため、意図しないセキュリティリスクにつながる可能性がありました。Python 3.xではこの問題が解消され、input() は常に文字列として入力を受け取るようになっています。

2. 出力方法の違い

Python 2.xのprintは「文(statement)」として扱われ、利用できる機能が限られていました。一方、Python 3.xではprintが「関数」に変更され、区切り文字を指定する sep 引数と、末尾に出力する文字を指定する end 引数が追加されました。これにより、出力フォーマットの制御が格段に容易になりました。

# Python 2.x の場合
print "tutorialspoint"

# Python 3.x の場合
print("tutorialspoint", sep="", end="\n")

上記の2つのコードはどちらも同じ出力結果になります。また、改行せずに同一行へ出力を続けたい場合、Python 2.xではprint文の末尾にカンマ「,」を付けますが、Python 3.xでは end=" " のようにend引数を使って指定します。

3. 除算演算子の違い

整数同士の除算において、Python 2.xでは結果が小数点以下を切り捨てた整数値として返されていました。これは多くの場合、意図しない計算結果を招く原因となっていました。Python 3.xではこの仕様が修正され、除算の結果は常に実数(float型)として返されるようになりました。

# Python 2.x の場合
a = 7 / 4  # 結果:1

# Python 3.x の場合
a = 7 / 4  # 結果:1.75

なお、Python 3.xでも切り捨て除算が必要な場合は、「//」(フロア除算演算子)を使用することで、従来のような整数結果を得ることができます(例:7 // 4 → 1)。

4. 例外処理の違い

例外処理の構文にも重要な変更があります。Python 2.xでは、例外オブジェクトを受け取る変数をカンマ「,」で区切って指定していましたが、Python 3.xではより明確な as キーワードを使う方式に置き換えられました。

# Python 2.x の場合
try:
    pass
except NameError, err:
    print err, 'Error Caused'

# Python 3.x の場合
try:
    pass
except NameError as err:
    print(err, 'Error Caused')

as キーワードを使用することで、構文の可読性が向上し、複数の例外をまとめて捕捉する場合との混同も避けられるようになりました。

まとめ

この記事では、Python 2.xとPython 3.xの重要な違いとして、入力方法、出力方法、除算演算子、そして例外処理の4つのポイントを具体例とともに学びました。Python 2は2020年1月に正式サポートを終了しているため、今後の開発ではPython 3.xの仕様に準拠したコードを書くことが推奨されます。レガシーコードを扱う際も、これらの違いを把握しておくことで、移行作業をスムーズに進められるでしょう。

  1. Windows XPとWindows 7の主な違い10選【アップグレード前に知っておきたい変更点】

    多くのユーザーがWindows Vistaを飛ばしてWindows XPを使い続けていた場合、Windows 7へのアップグレードは大きな変化として感じられるかもしれません。Microsoftの新型OSは、使いやすさ、利便性、そしてコンピューティング体験全体において、従来のWindowsから大きく進化を遂げています。 すべてが劇的な変更というわけではありませんが、ここではWindows XPとWindows 7の主な違いを10個ご紹介します。XPの操作方法に長年慣れ親しんできた方にとって、これらの変更点は重要に映るはずです。XPからWindows 7へのアップグレードを検討している方は、あらか

  2. PythonとBoto3を使ってS3オブジェクトをダウンロードする方法

    この記事では、PythonとBoto3ライブラリを使用して、AWS S3バケットからファイルや画像をダウンロードする具体的な方法をコード例とともに解説します。 Boto3はAWS公式のPython用SDK(ソフトウェア開発キット)です。EC2やS3バケットといったAWSサービスと簡単に連携できる使いやすい関数群を提供しており、PythonでのAWS操作の定番ライブラリとなっています。 PythonとBoto3でS3オブジェクトをダウンロードする基本 まずは、指定したS3バケットから1つのファイルをダウンロードする基本的な例を見てみましょう。 S3を操作するには、boto3.client(s3)