我无法在任何地方找到满意的答案,所以我决定询问。
假设我们有一个全局计数器和一个全局列表
counter=0
list=["function1","function2",..."functionN"]
我们还定义了这些函数:
def function1():
pass
def function2():
pass
.
.
.
def functionN():
pass
我有一个带有按钮的界面,每次按下它时,全局计数器都会递增。根据号码,我需要调用不同的函数。我可以用 if 和 elif 来实现这个,但我不认为它那么聪明。 有没有办法可以使用列表调用这些函数?
示例
当 counter=0=>list[0]=>字符串为 'function1'=> 调用 function1()
再次按下按钮
counter=1=>list[1]=>字符串是 'function2' => 调用 function2()
最佳答案
您可以通过函数名称调用函数,如下所示:
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]()
关于python - 在 Python 中,如何使用列表中的字符串来调用同名函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60458257/