【发布时间】:2015-03-08 08:56:59
【问题描述】:
我想要一个绘图界面(我做 Allllooottt 的绘图),用户可以在其中放入未定义的变量。
所需的界面
plot(ax,time,n1) # Returns Name Error
当前界面
plot(ax,'time','n1')
我知道这可能是一项艰巨的任务,但我很好奇 Stack Overflow 的天才们是否能找到一种方法来做到这一点。到目前为止,我已经尝试了一个装饰器,但这不起作用,因为错误没有发生在函数中,它发生在函数的调用中。尽管如此,我仍然对解决方案感兴趣......即使它很麻烦。
当前代码
def handleUndefined(function):
try:
return function
except NameError as ne:
print ne
except Exception as e:
print e
@handleUndefined
def plot(self,**args):
axesList = filter(lambda arg: isinstance(arg,p.Axes),args.keys())
parmList = filter(lambda arg: arg in self.parms, args.keys())
print axesList
print parmList
fig,ax = p.subplots()
plot(ax,time,n1)
我正在设计一个绘图界面,人们可能每分钟绘制 20 个绘图,因此在这里减少语法很重要。
【问题讨论】:
-
为什么你觉得你需要处理未定义的变量名?我真的不认为这是你定义的方式可以解决的。
-
我同意你的看法。我只是想展示一个我一直在研究的解决方案。我认为任何解决方案都需要在全局命名空间中发生。也许我可以在全局命名空间中创建虚拟参数?
-
您是否只是想在每次通话时保存几个引号?
-
您正在尝试使用未定义的变量,您希望如何“解决”它?这些未定义的变量应该保持什么值?
-
您每分钟输入
plot(ax,'time','n1')20 次?这令人印象深刻。
标签: python function interface arguments undefined