如何在循环Python中调用不同的函数

时间:2017-12-25 08:01:12

标签: python algorithm loops

关于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

3 个答案:

答案 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
  • 将定义这些功能的文件导入主脚本
  • 使用python的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)]()