【初心者向け】Python2と3の違いは?変更点やどちらを使うべきかについて解説

Pythonをインストールする際、「Python 2.X.XX」と「Python 3.X.XX」でバージョンが2種類あることに気づかれた方もいるかと思います。

一見すると、「何故わざわざ 古いバージョンを記載しているのか」「どちらをインストールすればいいのか」など、いろいろ不安を感じてしまいますよね。

そこで、この記事ではPython2と3の違いや、どちらのバージョンを使うべきかについて解説していきたいと思います。

目次

どちらのバージョンを使うべきか

結論から言うと、特に理由がない限りはPython3のインストールで問題ありません。

というのも、Python2に関しては2020年で既にサポートが終了しています。

これからPythonを学ぼうとする方であれば、Python2を使うメリットは現状ほぼない状態です。

何故まだPython2が残っているのか

サポート外にも関わらず、Python2のダウンロードリンクが公式サイトに残っている理由としては、Python2でしか対応していないライブラリが存在するからです。

ライブラリ…様々な機能をもつプログラムの寄せ集めのこと。必要なライブラリを呼び出すことで、複雑な処理を書かずに内部の機能(例えば、グラフを描画するなど)を利用することが可能

既に開発済みのソフトウェアや商品で、使用しているライブラリがPython2にしか対応していないものだと、Python3への移行に膨大な手間と時間がかかってしまいます。

そういった理由から、Python2を使わざるをえない状況もあるため、いまだにダウンロードリンクが残されているのです。

Python2と3の主な違い

「Python2にしか対応してないライブラリがある」と述べた通り、2つのバージョンには様々な違いがあります。

この先では、Python2と3の変更点についていくつか紹介したいと思います。

printの記述方法

printとは、指定の文字列や数値を出力するための命令のことです。

Python2では記述が文表記であったのに対し、Python3では関数に変更されました。

print "Hello, World!"  #「Hello, World!」という文字列を表示
print ("Hello, World!")  #「Hello, World!」という文字列を表示

関数化による変更点として、出力オプションも設定できるようになった部分が大きな特徴と言えます。

print("T","E","S","T", sep="_", end="!")  # 区切りに「_」、文末に「!」を追加して表示

= 実行結果 =

T_E_S_T!

数値の出力方法

Pythonでは、足し算や割り算などの計算を行う際に+/といった「演算子」を使用します。

Python2の場合、整数同士の計算だと演算結果も整数で出力される仕様になっていました。

num = 3 / 2  # numという変数に、3÷2の結果を保持
print num  # numの中身を表示(整数)

num = 3 / 2.0  # 今度は、3(整数)÷2.0(小数)の結果を保持
print num  # 再びnumの中身を表示(整数÷小数のため、小数)

= 実行結果 =

1
1.5

Python3では、これらの面倒を省くため整数で割り切れない場合はデフォルトで小数出力に変更されています。

num = 3 / 2  # 3÷2の結果を保持
print(num)  # numの中身を表示(小数)

num = 3 // 2  # 整数で出力したい場合は、このように表記
print(num)  # 再びnumの中身を表示(整数)

= 実行結果 =

1.5
1

比較できない型の処理

Pythonでは、<orのような演算子を用いて、値同士を比較することも可能です。

Python2の場合、比較のできる/できないに関わらず何かしらの結果が返ってくるようになっていました。

print(1 < "a")  # 1(数値)とa(文字列)の比較結果を表示 ⇒ True(真)判定
print(None < None)  # 空の値(None)同士の比較結果を表示 ⇒ False(偽)判定

= 実行結果 =

True
False

Python3では、比較できない演算処理の場合、きちんと警告(TypeError)が出力される仕様に変更されています。

print(1 < "a")  # 1(数値)とa(文字列)の比較結果を表示 ⇒ エラー判定

= 実行結果 =

Traceback (most recent call last):
  File "sample.py", line 1, in <module>
    print(1 < "a")
TypeError: '<' not supported between instances of 'int' and 'str'

まとめ

この記事では、Python2と3の違いや、どちらのバージョンを使うべきかについて紹介しました。

結論としてはPython3で問題ないのですが、プログラミングを学んでいく上で言語の背景を知っておくことは非常に重要です。

これからPythonに取り組もうとしている方も、ぜひこの記事を参考に知識を深めてみてください。

シェアはこちらから
目次