我正在尝试为 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 的。