关于Rasberry PI,但在这种情况下,它并不重要。 我有9个功能,如:
for_1..9()
这些功能可打开4位LED显示屏的一部分。但我想在这个显示器上为每个数字使用一个按钮,所以每次按下按钮时我想调用不同的功能。不知道它怎么可能。
功能如下:
def for_1():
GPIO.output(15.HIGH)
GPIO.output(18.HIGH)
....
像这样的Smth:
if Pin.input(number of pin):
for i in range(0, 9):
for_1()
#next time in loop has to be next function
答案 0 :(得分:4)
你可以把函数放在像这样的迭代中
def f():
return 1
def g():
return 2
for fn in [f, g]:
print(fn())
# 1
# 2
将所需的函数放在一个可以迭代的容器中,然后调用它们。
答案 1 :(得分:2)
您可以使用动态方式为不同的迭代周期调用每个函数。
for_1
... for_9
,getattr
来获取函数并最终调用它。以下代码假定函数和迭代逻辑位于同一模块中。但是,您可以在单独的文件中定义函数,并将它们导入到迭代逻辑脚本中。
import sys
thismodule = sys.modules[__name__] #This fetches the current module refrence
def for_1():
return 1
for i in range(1, 10):
func = getattr(thismodule, "for_{}".format(i))
func() #This will invoke for_1 ... for_9
答案 2 :(得分:0)
试试这个:
if Pin.input(number of pin):
for i in range(0, 9):
globals()['for_'+str(i)]()
或
if Pin.input(number of pin):
for i in range(0, 9):
locals()['for_'+str(i)]()