我有一个通过telnet / pexpect登录传感器并充当数据收集器的功能。
我不想重写登录的部分,抓取数据,并从中解析出相关的输出(pexpect)。但是,我需要对此代码及其收集的数据执行不同的操作
例如,我可能需要:
返回第一次阅读的时间
取不同数量的传感器读数的平均值
返回状态(这是一个数据)或返回传感器 阅读(这是一个单独的部分 数据)来自输出
最终,它仍然应该登录并解析输出相同,我想为该部分使用一个代码块。
代码越高,它就会被即时使用。当我打电话给它时,我知道我需要收集什么类型的数据,就是这样。构造对象太笨拙了。
我的用法超过了为单个函数添加更多参数。
有什么想法吗?
答案 0 :(得分:3)
这是一种常见的情况,我很惊讶你还没有做过其他人所做的事情。
重构您的函数以将其分解为更小的函数。
函数是对象,可以作为参数传递给其他函数。
def step1():
whatever
def step2():
whatever
def step2_alternative():
whatever
def original( args ):
step1()
step2()
def revised( args, step2_choice ):
step1()
step2_choice()
现在你可以做到这一点。
revised( step2 )
revised( step2_alternative )
它只是使用函数对象进行OO编程。
答案 1 :(得分:0)
您是否可以将数据处理函数传递给您描述为参数的函数?
根据您的口味,这可能或多或少是优雅的。 (原谅我:我对pexpect一无所知,甚至可能误解了你的问题!)