2015年11月11日

Python 3.0 と 3.1

Python 2.7 との互換性を考える際に問題となる Python 3.0 と 3.1 についてお話します。


まず、2008 ~ 2011年のPythonのリリーススケジュールを振り返ります。

Python 2.6 2008年10月
Python 3.0 2008年12月
Python 3.1 2009年 6月
Python 2.7 2010年 7月
Python 3.2 2011年 2月

Python 3の特殊事情ゆえ、バージョン順とリリース順が合致していません。
この中で、2.7 以前にリリースされた 3.0 と 3.1 では、若干ややこしい話があります。

例として、collections.OrderedDict という dict を拡張子したクラスがありますが、これは 2.7 および 3.1 で追加されたクラスです。3.0 には含まれていません。2.7 には含まれているのに 3.0 には含まれていない、というバージョン順の観点からは起るべきでないことが起こってしまっています。
他にも、argparse という有力なライブラリがありますが、これは 2.7 および 3.2 で追加されたライブラリです。3.0 と 3.1 には含まれていません。
このようなバージョン間の混乱は他にも多くあります


バージョン順とリリース順の合致は、Python 3.2 のリリースまで待つ必要があります。3.2 でこの混乱がようやく収まります。
この混乱を考慮すると、2015年の現在において、Python 2.7 よりも古い Python 3.0 と 3.1 をケアする積極的な理由はありません。



仮に、以下のような方針でプログラムを書き始めるとします。

  • Python 2 と Python 3 両方で動くようにする
  • ここで言う Python 2 とは Python 2.7 のことである

この方針であるならば、Python 2.7よりも古い Python 3.0 と 3.1 は動作対象外とする方が賢明です。よって、方針にはさらに1文を加えるべきです。
  • ここで言う Python 3 とは Python 3.2 以上のことである

0 件のコメント:

コメントを投稿