我需要使用字符串来确定要运行的计算。我尝试使用调度表而不是elif梯形图。我需要运行一些单行程序,一些多行函数,并且我需要基于传入状态的一部分运行一个函数
这段代码简化为解释。前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)以外的其他逻辑。例如,使用regexp检查表达式是否匹配"xxxMHz Ave"
,在这种情况下使用RAve(ave=xxx)
m相关问题 更多 >
编程相关推荐