假设我想从以下 lambda 在 IPython shell 上动态创建一个函数:
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的嵌入式 shell中运行它时,我得到:
AttributeError: 'functools.partial' object has no attribute '__module__'
有没有其他方法可以做到这一点,也许使用装饰器?
主题背景:
- 这是一个提示问题的 IPython问题。
- 这是一个解释问题的线程(仅在 Python 3.x 中修复)。
- 这是SO 中显示问题的另一个线程(请参阅顶部评论)
- 有关此问题的更深入分析,请参阅 IPython 中的此问题。
同样,我正在寻找的是另一种方法。