在Python中,如何使用列表中的字符串调用同名函数?

在Python中,如何使用列表中的字符串调用同名函数?,python,Python,我在任何地方都找不到满意的答案,所以我决定去问 假设我们有一个全局计数器和一个全局列表 counter=0 list=["function1","function2",..."functionN"] 我们还定义了这些功能: def function1(): pass def function2(): pass . . . def functionN(): pass 我有一个带有按钮的界面,每次我按下它,全局计数器都会递增。根据号码,我需要调用不同的函数。我可以用if和elif

我在任何地方都找不到满意的答案,所以我决定去问

假设我们有一个全局计数器和一个全局列表

counter=0
list=["function1","function2",..."functionN"]
我们还定义了这些功能:

def function1():
  pass
def function2():
  pass
.
.
.
def functionN():
  pass


我有一个带有按钮的界面,每次我按下它,全局计数器都会递增。根据号码,我需要调用不同的函数。我可以用if和elif实现这一点,但我认为它没有那么聪明。 有没有一种方法可以使用列表调用这些函数

示例

当计数器=0=>list[0]=>时,字符串为'function1'=>callfunction1()

再次按下按钮


counter=1=>list[1]=>字符串为'function2'=>call function2()

您可以按函数名调用函数,如下所示:

import foo
getattr(foo, 'myfunction')()
locals()[“myfunction”]()

或:

globals()[“myfunction”]()

或者,如果它来自另一个模块,则如下所示:

import foo
getattr(foo, 'myfunction')()
或者,如果它适合您的用例,只需使用函数列表而不是字符串列表:

def func1():
    print("1")

def func2():
    print("2")

def func3():
    print("3")

def func4():
    print("4")

some_list=[func1, func2, func3, func4]

# call like this
for f in some_list:
    f()

# or like this
some_list[0]()

与@chepner所说的类似,我将以这种方式处理这个问题

可能将函数存储在字典中,并根据计数器查找函数:

def function():
    print('function 1 called')

def function2():
    print('function 2 called')

counter = 0

functions = {
    1: function,
    2: function2
}
然后:

现在,当调用
function\u to\u call()
时,它将打印调用的
函数1


这就是我处理问题的想法。

为什么我们有一个字符串列表,而不是函数列表
[function1,function2,…]
,这样我就可以直接调用
list[counter]()