さすがにちょっとくらい遊ぼうと思って、今 3.5.1 をインストールしてみたりもして。
何かを supersede するようなものが出来たであるとか、問題点があるからと言う理由で「いずれ非推奨になります」とか「いつか消えます」とかなんてのは、Python の歴史上何度も繰り返されてきたこと。その中の「絶賛宙ぶらりん中」なのがコレ。
PEP 3101 進化版文字列フォーマッティングが従来の % 演算子を完全に置き換え、ここで言うように:
と予定された。3.0 リリース時 (2008年かな?) には。ケドみなさまご承知のとーり、% 演算子は消える気配がない。そして今 3.5.1 で試してみたけど、無論警告やらも出ることもなく。もっといやぁ、PEP 461なんつぅ、「% 廃止運動」に反する拡張が今更入っていたりもする。
この手の機能の置換や廃止はマイナーバージョン一つで解決してきたものもこれまで数多いけれど、とんでもなく気長に進められてきたものも多くて、その代表的なのが「int/long 問題」と「文字列とは Unicode のことである問題」の2つで、これは要するにメジャーバージョン一つ (10年くらい) かけたわけであって、この % 演算子問題もそうなるのかもしれない。
と…言いたいところだけど、これまでしばらくの期間ずっと What’s New を熟読して歴史を眺めてきた感覚からいって、この件、どーーも「立ち消え」臭がしないでもないのな。あんまし「使うな」を前面に押し出さないのね、公式ドキュメントが。強いて言えば 2.7 では入っていない文言:
が 3.x では入ったことくらい。まぁこれでも十分なのかもしれないけれど、言い方は決して強いとは言えないわけね。
個人的には「無理じゃね?」と思うのね。3.x 内でこれを撤廃するなんて。どんだけ使われてるか、てことだ。だからほんとにこれが削除されるのはきっと 4.x、2008 年からの十数年後と考えればおそらく東京オリンピック以降。本当にプログラムから非推奨扱いになる(ドキュメントだけでなく)のはその一つ前の「最後の 3.x」で、なのだろう。「it will be deprecated in Python 3.1」とはよく言ったもんだ。(python-dev ML を検索するほどの体力はないが、おそらくそれをすれば、これへの反感的なスレッドもあったんじゃないのかなと想像する。)
ワタシは今でも癖で結構普通に % 使っちゃうし、メジャーな OSS だってかなり使ってるのは見てきてる。str.format の方が、あるいは Template がパワフルで柔軟だてのは重々わかった上で、無論「いつか消すぞ」言われてるものを「気にせず使いなはれ」と言うほどの度胸もないけれどもね、ケドさ、「本当にパワフルなテンプレートエンジンが欲しければ」の程度問題というのがあってな。「その str.format だって不十分であろ」ってなったらもう Jinja2 や Mako の出番でしょ、だって。標準の str.format 「パワフルだ、すげー」を喰らい尽くそうなんて、あんま思わないわけだな。(これが % でもいんじゃね? と思うことに繋がったりする。)
で、結論は?
うーん。「絶対に % 演算子を使うべからず」と言うほどのもんではないけど、「少しずつ使わないようにしていけば?」くらいには思う。この 5 年以内にある日突然 % 演算子が使えなくなることはない、とだけははっきり予測出来るからさ、じっくりやってきゃいいんじゃない? 程度のもんだよね。