White scenery @showyou, hatena

If you have any comments, you may also send twitter @shsub or @showyou.

Python2ユーザから見たPython3

この記事はpycon.jpのKeynoteでpython3が残念っていう話があったので、それについて書きます。

なぜPython3を使わないのか

  1. 文法が少し変わったので習得にコストがかかる(特に3.0とか3.1はかなり互換性捨てられてた気が)
  2. C周りの補助機能が亡くなった気が(お陰でMeCabのCバインディングが使えない)
  3. 1, 2の理由もあり対応していないライブラリが多かった。現状だと割とでかそうなのがMySQL-python, thrift*1, Sentry*2, protobuf*3とか。
  1. その割に便利になるとこが少なそう(基調講演のNo Benefit (hahaha))

Windows XPが7に置き換われたように、いずれ3に移るという意見もありますが、一方でVistaのように存在自体が葬られる可能性もあります。

 

実際Python3はどうなのか?

ではPython3は全然よくなってないのでしょうか。そういうことはなさそうです。

  1. MeCabに関して:python3で動くものが出てきているようです python3対応 Mecabの紹介 - Python, web, Algorithm 技術的なメモ
  2. MySQL-python : methame methaneさんがforkしてます。またpythonで実装してるmysqlコネクタはpython3でも使えると報告があります(当初お名前間違えておりました。申し訳ございません)
  3. MySQL-python の Python 3 対応 - methaneのブログ
  4. 便利になるとこ : 特に日本人だとutf-8周りが大きいようです。python2のunicode周りは結構面倒ですしね。3.4から入ったasyncio*4なんかも便利そうです。
  5. Cへのアクセス周りは・・

 

今後どうすればPython3に移るか

  1. CentOS/Ubuntu(Debian)の標準がPython3になる :P virtualenvで2と3は共存できましたっけ?
  2. 便利になるとこ、Py2に戻れないよってとこを教えて欲しい(ググれという話もありますが)。私はPy2.6~2.7を使ってますが、Py2.4(RHEL5,CentOS5の標準)にはとても戻れないです。なぜならsetが使えないからです(Cのsetなら使えたっけ?)。そういった感じの便利点を挙げてもらえると嬉しいです。
  3. Python2で引っかかるところを克服する。Pythonのコアコミッタだけでなく普段使ってる人も問題を上げたり、既存のライブラリをforkして使いやすくするなどできることはあります。Do It Yourself. 

私はどうするか

デメリットが減ってきたので今日から移るつもりです。つもりと書いてるのは、今日もpycon jpに参加して発表を聞くのでコード書くかどうかわからないからです :P

 9/14 16:18 追記

> virtualenvで2と3は共存できましたっけ? 

二日目のセッションで目の前でデモやられたので"できる"が答えですね。

*1:他のプロセスとの通信に使うライブラリ。pythonHadoopにつなぐときに使う

*2:Cloudera Hueの認証周りで使う

*3:シリアライズライブラリ

*4:非同期通信