次のラムダから IPython シェルで関数を動的に作成したいとします。
f = lambda x, ci: np.percentile(x, 100-ci)
ci
新しい値に固定されます。次のようなものになります(create_new_f
私が探しているものです)。
ci = 20
new_f = create_new_f(f, ci=ci)
result = new_f([20,30,50,80])
私は次のように使用functools.partial
してみました:
new_f = functools.partial(f, ci=20)
しかし、これを IPythonの組み込みシェルで実行すると、次のようになります。
AttributeError: 'functools.partial' object has no attribute '__module__'
おそらくデコレータを使用して、これを行う別の方法はありますか?
トピックの背景:
- これは、質問を促したIPythonの問題です。
- 問題を説明するスレッド(および Python 3.xのみで修正) もここにあります。
- 問題を示す SOの別のスレッドを次に示します (一番上のコメントを参照)。
- この問題のさらに深い分析については、IPythonのこの問題を参照してください。
繰り返しますが、私が探しているのは、これを行う別の方法です。