CC56

CC56: 567収束までに達成したい56リスト

Pythonのある組み込み関数が便利だった件について

f:id:hyper-pigeon:20210704222407p:plain
Pythonの組み込み関数(公式ドキュメントのスクショ)

バージョン3.7以上のPythonは69種類の組み込み関数を使うことができます。

組み込み関数で最も有名なものの一つが、print() ですね。
pprint とかいうモジュールがあるけど、 正直 print() のほうがハイライトされるのでデバッグしやすい。)

ただ、普段Pythonの組み込み関数の大半は使いません。 print関数以外で日常的に使うものといえば以下の10種類くらいでしょうか。

  • map()
  • filter()
  • zip()
  • range()
  • type()
  • len()
  • staticmethod()
  • id()
  • open()
  • next()

残りの組み込み関数に関しては、正直 numpy や記法で大半が補えると思います。
(とはいえ僕は競技用プログラミングなどをやらないので、また別のスキルセットで必要になる組み込み関数があるのかもしれませんが)

あれ…コイツ強くね

僕は、pythonのインタプリタを即席の画像処理ツールのように使うときがよくあります。 たとえば、自分で描いた漫画のページ n と n+1 を concatenate して保存したかったので、numpy + skimage で済ませました。

で、本題に入るのですが、skimage.io.imsave() の引数順、その場ですぐ思い出せますか?(skimage使わない人は、plt.imsave() とかどうでしょう)

help() 「いるぞ、俺が」

たぶんhelp()自体の存在を覚えているPythonユーザーは多いと思うのですが、実際に使っている人やTwitter上で話題を一度も見たことがないです。記憶から消えてるだけかもしれませんが。

help() に関しては、人のコードを見ても使われた痕跡が残らないタイプのものです。他人が使ったことがそもそもわからない、組み込み関数のなかでも特殊な立ち位置なんですね。pdb の親戚って匂いがします。

ググるより雑に helpで囲むほうが早いよね

さいきんは、関数の引数がわからなくなったときはGoogleとかで雑に関数名を調べれば出てきます。

ですが、
作業画面からの離脱
→ タブを開く
 → 検索動作
  → Webサイトの確認
   → タブを閉じる
    → 作業画面に戻る
と、意外と手数が多いです。

集中力がない日の朝だったりすると、検索した後に忘れてまた検索し直したりした経験もあるのではないでしょうか…

help() を使えば、

f:id:hyper-pigeon:20210704220930p:plain

f:id:hyper-pigeon:20210704220941p:plain

imsave(fname, arr) が正しかったようです。

Notebook でもガンガン使えるよね

組み込み関数なのでNotebookでも使えます。numpy のランダム系の関数とかややこしいですよね。


np.random.random(), np.random.randint() を調べる例

f:id:hyper-pigeon:20210704221231p:plain


あとは、TensorFlowとかの動作で気になったところも一瞬で調べられます。(TensorFlowは最新バージョンのドキュメント優先で検索に出てくるので、バージョンによる互換性の違いとかで引っかかりにくくもなる…かもしれません)


tf.nn.depth_to_space() の仕様を調べる例

f:id:hyper-pigeon:20210704221558p:plain

やはり有名ライブラリはかなりちゃんと仕様が書いてあります。偉い!


おわりに

というわけで、組み込み関数 help()、サバイバルナイフみたいな感じで頭の片隅にしまっておいて、状況に応じて使うと開発速度も上がるのではないでしょうか。