みなさんPythonは好きですか?
年が明けて2020年1月1日になれば、Python2系のサポートが終了します。感慨深いものがありますね(?)。
Python3.0が2008年12月3日にリリースされて、もう11年がたちます。
2から3に移行するとき、互換性がなくてみんなが文句を言っていたことも今は懐かしい思い出ですね(?)。
4月15日に開催されるPyCon2020では、みんなでPython2の最後のカタルシス(?)を楽しむらしいです。楽しそうですね。
というわけで、2019年の大みそかに、Python2との思い出を書きたいと思います。
(※正確には2019年10月19日にリリースされた2.7.17が最後のサポートアップデートで、2020年1月1日がサポートが終了、1月中にコードフリーズした上で本当に最後の最後のアップデート2.7.18がリリースされる予定だそうです)
- Python2のデスマーチについて議論されたメーリングリストでのやり取り
- 正式なPython2のサポート廃止に関するアナウンス
Python2→Python3の思い出
print文がprint関数に
【Python2】
print 'HelloWorld'
【Python3】
print('HelloWorld')
これは当時よく話題に上がりましたね。
特にプログラミムの構造に影響を与えず出力をするだけのprintが文というのも変な話ですし、print文の出力先を標準出力以外のファイルなどにしたいときは結構変な書き方をしなければならなかったので、個人的には関数のほうが自然でよいと思います。が、当時はprint文のままがいい派が結構いた気がします。
range関数がxrange関数と同じ動作になって、xrange関数がなくなる
xrange関数を使っているコードが多かったので、当時は結構つらかった思い出があります。
range関数を使ってリストを作り、それを処理しているコードはxrangeのようなイテラブルなオブジェクトが返ってくることを想定していなかったりしたので……。
モジュールの名称や場所の変更、http,urllib類
Python2ではhttplib, SimpleHTTPServerなどhttp系のモジュールがバラバラとありましたが、3ではhttp.〜系にまとめられましたね。urllibとurllib2はどっちがどっちやねんと思うことが多かったので、これは統一されてよかったと思います。
ほかにも、commandsモジュールがsubprocessになったりして、割と書き換え案件が多発しました。
map,filterがイテレータを返すようになり、reduceがfunctoolsに移動
私は高階関数を使うのが好きなので、reduceがfunctoolsに移動してしまったのは当時ちょっと悲しかった思い出です。
リスト内包表記で表現可能ではありますが、reduceはいまだに戻してほしいな〜とちょっぴり思っています。(別にimportすればいいのでほんのちょっぴりですけど……)
まとめ
というわけで、Python2→Python3への思い出はいくらでもあるのですが、3.8で新しくセイウチ演算子が出たり、フォーマット文字列関係でf-stringsが導入されたりしていますし、今後のPython3の動きも楽しみにしつつ、最後のPython2も味わっていきましょう。
フォーマット文字関係は、f-string、format関数、%構文など割と混沌としているので、Python4が生まれる頃に一本化されていることを祈りつつ……。
なおpaizaラーニングでは、「Python3入門編」を全編無料で公開しています。
Pythonの勉強を始めてみたいプログラミング初心者の方、Python2を懐かしみつつPython3に移行したい方はぜひのぞいてみてください。
この記事で今年のpaiza開発日誌の更新はおしまいです。2019年も多くの読者に支えられて、このブログを続けることができました。2020年もpaizaとこのブログをよろしくお願いいたします!
「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。
詳しくはこちら
そしてpaizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。
詳しくはこちら