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

2024-05-29 06:40:12 发布

您现在位置:Python中文网/ 问答频道 /正文

这是关于Rasberry PI,但在这种情况下,这无关紧要。 我有9个功能,比如:

for_1..9()

这些功能打开4位LED显示屏的一部分。但是我想对显示器上的每个数字使用一个按钮,所以每次按下按钮时我都要调用不同的函数。不知道怎么可能。在

函数如下所示:

def for_1():
    GPIO.output(15.HIGH)
    GPIO.output(18.HIGH)
    ....

像这样的短信:

^{pr2}$

Tags: 函数功能foroutputledgpiodefpi
3条回答

您可以使用动态方式为不同的迭代周期调用每个函数。在

  • 定义所有函数,即从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

你可以像这样把函数放在iterable中

def f():
    return 1

def g():
    return 2

for fn in [f, g]:
    print(fn())
# 1
# 2

只需将所需的函数放入一个可以迭代的容器中,然后调用它们。在

试试这个:

if Pin.input(number of pin):
    for i in range(0, 9):
        globals()['for_'+str(i)]()

或者

^{pr2}$

相关问题 更多 >

    热门问题