Python调度表字符串变量



我需要使用一个字符串来确定要运行的计算。我正在尝试使用调度表而不是elif梯形图。我需要运行一些单行函数,一些多行函数,并且我需要运行一个基于传入状态a部分的函数。

此代码经过简化以便于解释。前4个函数有效,但后3个函数无效。

<!-- language: python -->
Fun = functions.get(reference, lambda : print('Invalid Ref'))
fun(my_df, start, stop)
def Ripple(df, start, stop):#Some multi-line function
temp = df.trc3_s12_db[df.index >= start, df.index <= stop]
return temp.values.max() - temp.values.min()
def RAve(df, start, stop, ave, spacing=100):#Changing function
return df.trc3_s12_db.rolling(ave*spacing).[df.index >= start, df.index <= stop].min()
functions = { #Dispatch Table
'MinA': lambda df, start, stop: df[df.index >= start, df.index <= stop].tA.min() * (-1),
'MaxA': lambda df, start, stop: df[df.index >= start, df.index <= stop].tA.max() * (-1),
'MinB': lambda df, start, stop: df[df.index >= start, df.index <= stop].tB.min() * (-1),
'Ripple': Ripple,
'5MHz Ave': RAve(ave=5),
'2.2MHz Ave': RAve(ave=2.2),
'%dMHz Ave': RAve(ave=%d) #Is this possible?
}

我知道我可以使用元组传递函数和参数,但整个表需要是元组。

我可以通过字符串格式将变量传递到调度表中吗?对这些可能性进行分类的最佳方法是什么?

对于第一部分,您似乎正在尝试创建一个分部函数,一个由另一个函数组成的函数,其中一些参数被"烧录"。

对于第二部分'%dMHz Ave': RAve(ave=%d) #Is this possible?-不,这是不可能的。您需要一些其他逻辑来检测这种情况,然后在这种情况下使用调度表(dict(以外的东西。例如,使用正则表达式检查表达式是否与"xxxMHz Ave"匹配,在这种情况下使用RAve(ave=xxx)m

最新更新