如何在Python中使用列表中的字符串来调用具有相同名称的函数?

我无法在任何地方找到令人满意的答案,所以我决定问。


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


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' => call function2()


繁星点点滴滴
浏览 73回答 2
2回答

呼唤远方

与@chepner所说,我会以这种方式解决问题。可能将函数存储在字典中,并根据计数器查找函数:def function():    print('function 1 called')def function2():    print('function 2 called')counter = 0functions = {    1: function,    2: function2}然后:function_to_call = functions[counter + 1]现在,当调用时,它将打印function_to_call()function 1 called这就是我思考解决问题的方式。

Helenr

您可以按其名称调用函数,如下所示:locals()["myfunction"]()艺术globals()["myfunction"]()或者如果它来自另一个模块,如下所示:import foogetattr(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 thisfor f in some_list:    f()# or like thissome_list[0]()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python