如何使用等于函数名称的字符串值调用函数

我正在尝试调用 myFunc(),但是我想使用等于“ myFunc” 的字符串值,而不是在调用时手动键入。 / p>

这是我想做的一些例子;

a = "myFunc"

def myFunc():
   print("Bla bla")

a() ### How can i compile this code like its myFunc()


wang532948001 回答:如何使用等于函数名称的字符串值调用函数

在您的示例中,myFunc是全局变量,因此:

globals()[a]()

如果您查看globals()返回的字典,您会看到(以及其他内容):

{'a': 'myFunc','myFunc': <function myFunc at 0x0119B618>}
,

我可以想到两种实现方法:

使用全局名称空间

In [1]: def myfunc():
...:     print('Bla bla!') 
In [2]: a = 'myfunc'
In [3]: globals()[a]()
Bla bla! 

或使用eval

In [4]: eval(a + '()')
Bla bla!
,

是的,您可以像这样用eval调用它:

a = "myFunc()" 

def myFunc(): 
print("Bla bla") 

eval(a)                                                                                                                                             
Bla bla  

这有帮助吗?谢谢! Eval对于调用列表中的函数很有用,例如,您可以迭代以下函数列表:

for item in functionlist:
  eval(item)
本文链接:https://www.f2er.com/3130661.html

大家都在问