What’s old ではじめて知ったり再認識した機能は結構あるんだけれど。
翻訳しながら熟読してると、結構「そこにしかない」記述があんのね。
ワタシ、Python 公式ドキュメントでは割と褒めてばっかりいるけど、本当のところいくつか大きな不満があって、一つには「言語リファレンスが使いにくい」ことで、例えばジェネレータやイテレータといった基本言語機能の「とっかかり」を掴むのがまず大変で、なおかつ「全てが書かれているとは限らない」ことなのね。
What’s old してて改めて感じるんだけど、Python 公式ドキュメントは「Quick Start」がとても充実していて、実は「What’s New」がその一翼を担っている、ということなのね。それゆえに、なのかどうかはわからないんだけど、「完全ではないリファレンス」が割とある。
2.6 の What’s New に、ジェネレータの属性「gi_code」が使えるようになったことが書かれていた:
スニペットも何もない、まさにこの一言だけなのね。でこの英文が「誰が何を参照しとんねん」が掴みにくい。辛うじて
という意味であろうなと訳出するも、自信が持てないのでリファレンスを参照しようとして…。yield 式のリファレンスの末尾:
ん? んんんんんんんんんん?? んなわけない、んなわけない。なんだこの訳? 原文はこう:
is complete は「実装がパーフェクトならば」なんて意味じゃない。仕方ないので訳を訂正しておいた:
2.7 から間違っていたのだろうかと思ってみてみたら、3 系で初登場の表現らしい。そして前後よくみるとわかるのだが、訳者が明らかに直前までと違う。だってその前ではちゃんと「完了」と訳出できてんだもん。こういうの結構多いが、なんで前後よくみて翻訳できないんであろうか。
さて、本題の gi_code なんだけど、こんな感じ:
1 me@host: ~$ cat hoge.py
2 a = 1
3 b = 2
4 g = (i for i in range(10))
5
6 print(g.gi_code)
7
8 me@host: ~$ python hoge.py
9 <code object <genexpr> at 0000000001D2FE30, file "hoge.py", line 3>
10 me@host: ~$
なるほど。たぶんプロファイラとかデバッグとかで使えるってことだろう。