LoginSignup
1
3

Jupyter Notebook を関数化するライブラリを作成しました

Posted at

はじめに

Jupyter Notebook で作成した一連の処理を関数化できるライブラリnbtofを作成しました. #@~ マークを Notebook の各セルに記述するとNotebook の処理に対応した関数が取得できます. 例えば, 以下の sample.ipynb を関数化する時は

sample.ipynb

#@param
a = 1
b = 1
c = a + b
#@ignore
print(a, b, c)
#@return
c

下記を実行することで関数化された sample.py を取得することができます.

import nbtof

nbtof.nbtof_generate(
    notebook_name='sample.ipynb',
    func_py_name='sample.py',
    )

sample.py

def sample(a, b):
    c = a + b
    return c

nbtofを利用することで,

  1. Jupyter Notebook で処理過程を確認しながらプログラム作成
  2. 関数化して他のプログラムで利用
  3. 原因が分かりにくいエラーに遭遇したら元の Notebook で途中の処理を確認しながら原因調査
  4. Notebook を修正して即関数化

という手順でバグ修正を効率化できると思います.

インストール方法

PyPI から下記でインストールできます.

$ pip install nbtof

利用方法

マーク一覧

Jupyter Notebook の各セルの最初に対応する#@~マークを付けて nbtof.nbtof_generate()を実行すると所望の関数化された python ファイルを取得できます. #@~マークが無いセルは関数内の処理として関数内に記述されます.

マーク 説明
#@param セル内の変数名は関数の引数になります. Jupyter Notebook内で割り当てられた値は無視されます.
#@default セル内の変数名は関数の引数になります. Jupyter Notebook内で割り当てられた値はデフォルト値になります.
#@args セル内の変数名が関数の可変長引数 *args の名前になります. Jupyter Notebook内で割り当てられた値は無視されます.
#@kwargs セル内の変数名が関数の可変長引数 **kwargs の名前になります. Jupyter Notebook内で割り当てられた値は無視されます.
#@return このマークの次の行が関数の戻り値になります.
#@ignore このマークがついたセル内の記述は無視されます.Jupyter Notebook内だけで処理過程を確認したいときに使用してください,
#@help セル内の内容は Docstring になります.
#@advance セル内の記述は関数の宣言前に直接記述されます. インポート等に利用してください
#@r_advance セル内の # が記述された行は関数の宣言前に # が外されて記述されます. 相対インポート等に利用してください
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3