1ヶ月でWebデザイン・プログラミングスキルをオーダーメイドのカリキュラムで学べるスクール、それがWebCamp。

子供の想像力を伸ばしアイデアを形にする小学生向けプログラミング教室「プロスタキッズ」

Python超入門その34〜2.x系と3.x系の違いを理解しておこう〜

Pocket

はじめに

どのバージョンのPythonを使っていますか?

この連載ではPython3のインストール方法を紹介したので、3.x系を使っている方が多いでしょう。

使っているPythonのバージョンがわからないという方は、コンソールでPythonに”-V”オプションをつけて実行すると、バージョンが表示されます。
または、プログラムでplatformモジュールをインポートしてpython_version関数を実行してもよいでしょう。

この記事では、Python初心者の方向けに、Python 2.x系と3.x系の違いについて説明していきます。

2.x系は2020年までサポートされる予定ですので、それまでは両者の違いを覚えておきましょう。

Pythonバージョンのおさらい

現在のところ、Pythonは2.x系と3.x系の2つのバージョンがサポートされています。
バージョン番号からも分かる通り、3.x系のほうが新しく、さまざまな改善がなされています。

なぜいまだに2.x系がサポートされているかというと、2.x系と3.x系はソースコードの互換性がない(動作しない場合がある)からです。
そのため、2.x系は2.7を最終バージョンとして2020年までサポートされることになっています。

2.x系のサポート期限終了は目前に迫っており、多くのライブラリは3.x系に対応していますが、まだ2.x系のコードを扱うこともあるでしょう。

そこで、次項から2.x系と3.x系の主な違いについて説明していきます。

Python 2.x系と3.x系の主な違い

print

2.x系ではprint文でしたが、3.x系ではprint関数に変更されています。
このため、3.x系では次のようにprint関数として実行する必要があります。

例:

 

なお、2.x系ではカッコをつけても問題ないので、これにより互換性を保つこともできます。

割り算(/)

割り算についても、目立たないものの重要な違いがあります。
2.x系では整数どうしの割り算(/)は整数(int)を返します。一方、3.x系では小数(float)を返します。

この微妙な違いはバグのもととなることもあるため、注意しておきましょう。

int型

2.x系では整数型としてint型とlong型が組み込まれていましたが、3.x系ではint型に統合されました。
このため、3.x系では数値が大きくなってもint型のままです。

例外構文

細かな変更ですが、2.x系と3.x系ではexcept文の構文が違います。
3.x系では、カンマから”as”キーワードを使うように変更されました。

例:

 

ソースコードに互換性をもたせる

場合によっては、ひとつのソースコードで2.x系と3.x系の両方に対応しなければならないこともあるかもしれません。
そのような場合には、次のようにバージョンを検出して分岐させる方法を使います。

例:

 

sys.version_infoタプルの第一要素からメジャーバージョンが取得できますので、それを使って3.x系以降と2.x系とを分けています。
また、次のように例外を使う方法もあります。

例:

 

例では、バージョンによって名前が異なるライブラリをインポートしています。

Python 2.x系ではImportErrorが発生するため、それをキャッチして適切なライブラリをインポートします。

2.x系で3.x系の機能を使う

2.x系で3.x系の機能が使えないかというと、そうではありません。

Pythonには”__future__モジュール”が用意されており、それをインポートすることで3.x系の機能が使えるようになります。
たとえば、次のようにします。

例:

 

この例では、”division”をインポートして、割り算の挙動を3.x系と同等に変更しています。
2.x系では標準で整数を返しますが、実行してみると小数を返すのが確認できます。

他にも、機能ごとに用意されたfutureをインポートすることで、2.x系でも3.x系の機能をサポートできます。

まとめ

Python 2.x系と3.x系はメジャーバージョンアップということもあり、かなり多くの変更が加えられています。

プログラムが対象とするバージョンを明確にして、適切な方法でコーディングしましょう。
もし両方のバージョンを対象とするのであれば、どちらのバージョンでも実行できるように互換性を持たせましょう。

2.x系のサポートは2020年で終了する予定ですので、2.x系を使っている方は早めの移行をおすすめします。

投稿者:プロスタ編集部

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

初心者がプログラミングで挫折しない学習方法を無料動画で公開中。オンラインに特化したプログラミングスクール「TechAcademy(テックアカデミー)」が解説。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

ページ上部へ戻る