我試圖寫的statsmodels式API的包裝(這是一個簡化版本,功能確實比這個更多)中調用帕齊時:如果我給這個函數命名空間問題的功能
import statsmodels.formula.api as smf
def wrapper(formula, data, **kwargs):
return smf.logit(formula, data).fit(**kwargs)
給用戶,誰再試圖定義他/她自己的功能:
def square(x):
return x**2
model = wrapper('y ~ x + square(x)', data=df)
,他們會得到NameError
因爲patsy
模塊正在尋找在wrapper
的命名空間功能square
。有沒有一種安全的,Pythonic的方式來處理這種情況,而不必事先知道函數名稱或需要多少功能?
供參考:這是Python 3.4.3。
我不知道細節(對我來說太過神奇),但是'statsmodels.base.model.Model.from_formula'文檔字符串描述了** kwarg中的'eval_env' kwd,您可能會增加由'from_formula'由所有或大部分模型繼承。 – user333700
是的,我確實嘗試過;似乎沒有工作,但也許我沒有正確地稱呼它。 – chriswhite
您是否嘗試將其設置爲3?在類似的情況下,我正在使用try..except wrappping來計算出用戶函數的深度。 – user333700