在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]()
?