基本上,我正在观察逻辑级别的某种变化,然后确定持续多长时间。由于需要观看许多不同的行,因此我开始为每行创建一个函数。所以我想,为什么不创建一个仅根据触发的行使用不同参数的函数。
def myCallBack(pin, bool, Ftimer, Etimer):
## some more code here for checking bools and using timers
GPIO.add_event_detect(pin1, GPIO.both, callback=myCallBack(pin1, bool1, Ftimer1, Etimer1), bouncetime=200)
GPIO.add_event_detect(pin2, GPIO.both, callback=myCallBack(pin2, bool2, Ftimer2, Etimer2), bouncetime=200)
...
当前,我收到错误“TypeError:参数必须可调用”
这种方法有可能吗?我要这样做正确吗?
任何帮助,将不胜感激。
谢谢。
最佳答案
from functools import partial
callback=partial(myCallBack, pin1, bool1, Ftimer1, Etimer1)
这将产生一个不带参数的函数,该函数在被调用时调用
myCallBack
,pin1
,bool1
,Ftimer1
和Etimer1
。或者,尝试:callback=lambda *a: myCallBack(pin1, bool1, Ftimer1, Etimer1)
另请参见Python, how to pass an argument to a function pointer parameter?。